静态属性最终会生活在gen2中吗?

时间:2011-05-04 23:41:59

标签: c# .net asp.net static garbage-collection

当我有一个static字段/属性存在于应用程序池的生命周期中时,它存在于内存中的哪个位置?我假设它被晋升为gen2并在那里过日子吗? (假设它足够小,不会进入LOH

1 个答案:

答案 0 :(得分:4)

静态属性存在于分配给类型/类的类型对象的内存空间中的堆中。它们在加载类型的同时加载。

静态属性不能被垃圾收集。永远不能卸载Type对象。

本书第4章的末尾CLR via C#解释了这一点。这是一个小的摘要图:enter image description here

这只是图表的一部分(由于版权不能完全复制),并显示Employee类型对象及其静态字段。 Type对象类似于所有其他对象,并且有一个指向其类型的指针,恰好是System.Type