垃圾收集器和静态类,变量

时间:2011-11-10 13:02:20

标签: c# garbage-collection

自从过去几天以来,有一点在我心中疑惑。 我想知道垃圾收集器如何使用静态类,变量?

众所周知,垃圾收集器会跟踪已在应用程序中创建的对象,并在不再使用时自动将其删除。 对于静态类,不会创建任何对象,并使用应用程序调试将其加载到内存中。

那么垃圾收集器处理静态类?

2 个答案:

答案 0 :(得分:10)

不需要删除静态类,因为它们不是对象,并且它们不占用内存(除了.NET基础结构加载的实际类代码之外)。另一方面,静态类中的静态字段是消耗内存的对象。它们不会被收集,因为它们可以在应用程序的整个生命周期内访问。如果要释放内存,则应将该字段设置为null,以便该字段指向的对象符合GC的条件

答案 1 :(得分:1)

他永远不会释放他们。 (例如在WEB中,直到IIS重新启动)。

他们永远不会说:“没有人引用我,所以我可以自由地去”

你永远不会对静态类做新事.... 所以它的用法仅仅是Class对象(而不是实例)。

因此.net没有任何机会并将其保留在GC之外。