如何为静态variables分配内存?

在下面的程序中:

class Main { static string staticVariable = "Static Variable"; string instanceVariable = "Instance Variable"; public Main(){} } 

instanceVariable将存储在分配给对象实例的内存中。 staticVariable存储在哪里,它存储在对象实例本身还是其他地方? 如果将其存储在其他地方,则存储位置如何连接?

内存的静态variables通常保存在一些根(和隐藏)的object[] 。 在WinDbg(带有SOS)的对象上可以看到做一个!gcroot。

只是补充一点,这些引用永远不会被GC(除非你把这个字段清空),正如我最近发现的那样。

例如在C ++中,staicvariables在全局内存空间中被分配全局variables。 编译器使用特殊的命名约定来知道这个variables属于这个类。