如何对Java静态类进行垃圾回收?
我有一个静态类,其中包含一个静态对象。如果我将对象设置为null,那么它将被垃圾回收。我不理解静态类的生命周期。当程序关闭时它是垃圾回收的吗?
发布于 2012-11-20 04:35:57
这样想:
每个对象都有一个对其类的引用。
每个类都有一个对其类加载器的引用。
每个类加载器都有一个对它所加载的每个类的引用。
整个乱七八糟的东西都有可能变成垃圾。这是应用程序卸载/重新加载(在servlet容器中)的基础。然而,如果有一个对象还被引用,类加载器和它的所有类都不能卸载,因此实现应用卸载并不是一件容易的事情。
发布于 2012-11-20 04:21:44
静态对象与类定义绑定,而不与类实例绑定。
它们在类通过ClassLoader加载时立即生效,只有在卸载类时才会销毁。
发布于 2012-11-20 04:20:11
静态类始终是可访问的,因此永远不会被垃圾回收。
现在,如果您的静态类有一个非静态类的字段和实例,并将其设置为null,那么该内存将被释放,因为该对象不再被引用。
例如
public static StaticClass
{
public static InstanceClass myInstanceClass;
}如果您将myInstanceClass设置为null,那么它将被垃圾收集。
https://stackoverflow.com/questions/13461514
复制相似问题