C# 如何为静态变量分配内存?
在以下程序中:C# 如何为静态变量分配内存?,c#,.net,memory-management,C#,.net,Memory Management,在以下程序中: class Main { static string staticVariable = "Static Variable"; string instanceVariable = "Instance Variable"; public Main(){} } instanceVariable将存储在为对象实例分配的内存中。staticVariable将存储在哪里,它是存储在对象实例本身还是其他地方?如果它存储在其他地方,内存位置是如何连接的?静
class Main
{
static string staticVariable = "Static Variable";
string instanceVariable = "Instance Variable";
public Main(){}
}
instanceVariable
将存储在为对象实例分配的内存中。staticVariable
将存储在哪里,它是存储在对象实例本身还是其他地方?如果它存储在其他地方,内存位置是如何连接的?静态变量的内存通常保存在某个有根(和隐藏的)对象[]
中。这可以看出做了一件好事!WinDbg中对象的gcroot(带SOS)
只需添加,这些引用永远不会被GCID(除非你忽略该字段),正如我最近发现的。< /P> < P>例如C++中的STATIC变量被分配在全局变量的全局内存空间中。编译器使用特殊的命名约定来知道这个变量属于这个类。
这是一个C#问题。将静态变量设为null是否真的会导致它被GC’ed。我真的很困惑。