如何为静态变量分配内存?

gk.*_*gk. 49 .net c# memory-management

在以下程序中:

class Main
{   
    static string staticVariable = "Static Variable";
    string instanceVariable = "Instance Variable";

    public Main(){}   
}
Run Code Online (Sandbox Code Playgroud)

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

lep*_*pie 12

静态变量的内存通常保存在一些root(和隐藏)中object[].可以看到在WinDbg(带SOS)的对象上执行!gcroot.

只是要添加,这些引用永远不会被GC(除非你将字段置空),正如我最近发现的那样.