自从过去几天以来,有一点在我心中疑惑。 我想知道垃圾收集器如何使用静态类,变量?
众所周知,垃圾收集器会跟踪已在应用程序中创建的对象,并在不再使用时自动将其删除。 对于静态类,不会创建任何对象,并使用应用程序调试将其加载到内存中。
那么垃圾收集器处理静态类?
答案 0 :(得分:10)
不需要删除静态类,因为它们不是对象,并且它们不占用内存(除了.NET基础结构加载的实际类代码之外)。另一方面,静态类中的静态字段是消耗内存的对象。它们不会被收集,因为它们可以在应用程序的整个生命周期内访问。如果要释放内存,则应将该字段设置为null,以便该字段指向的对象符合GC的条件
答案 1 :(得分:1)
他永远不会释放他们。 (例如在WEB中,直到IIS重新启动)。
他们永远不会说:“没有人引用我,所以我可以自由地去”
也
你永远不会对静态类做新事.... 所以它的用法仅仅是Class对象(而不是实例)。
因此.net没有任何机会并将其保留在GC之外。