【发布时间】:2013-10-23 17:29:38
【问题描述】:
我知道静态字段会导致内存泄漏,因为它们不会被 GC。
但是当有一个web应用部署在一个容器中(比如Tomcat)时,每个应用都有自己的ClassLoader,可以取消部署。
我的问题是,垃圾收集器是否声明将要卸载的类的静态成员引用的对象?
最简单的情况是singleton(通过引用self的静态变量实现),如果取消部署应用会被GC吗?
【问题讨论】:
-
据我所知,静态字段是 GCed,如果类是GCed。
-
好的,但是如果一个类被静态字段引用,它会被 GC 吗?例如在单例中......
-
如果类被它自己的静态字段引用,那么这不会阻止收集。请记住,如果不命名类,就无法引用单例。命名类(在字符串之外)是一个参考。
标签: java memory-leaks garbage-collection