在以下程序中:
class Main { static string staticVariable = "Static Variable"; string instanceVariable = "Instance Variable"; public Main(){} }
在instanceVariable
将存储分配给对象实例的记忆里.staticVariable
存储在哪里,是存储在对象实例本身还是其他地方?如果它存储在其他地方,内存位置如何连接?
静态变量的内存通常保存在一些root(和隐藏)中object[]
.可以看到在WinDbg(带SOS)的对象上执行!gcroot.
只是要添加,这些引用永远不会被GC(除非你将字段置空),正如我最近发现的那样.