当我有一个static
字段/属性存在于应用程序池的生命周期中时,它存在于内存中的哪个位置?我假设它被晋升为gen2
并在那里过日子吗? (假设它足够小,不会进入LOH)
答案 0 :(得分:4)
静态属性存在于分配给类型/类的类型对象的内存空间中的堆中。它们在加载类型的同时加载。
静态属性不能被垃圾收集。永远不能卸载Type对象。
本书第4章的末尾CLR via C#解释了这一点。这是一个小的摘要图:
这只是图表的一部分(由于版权不能完全复制),并显示Employee
类型对象及其静态字段。 Type对象类似于所有其他对象,并且有一个指向其类型的指针,恰好是System.Type
。