常量静态字段是否会导致Web应用程序中的内存泄漏?

时间:2013-10-23 17:29:38

标签: java memory-leaks garbage-collection

我知道静态字段可能会导致内存泄漏,因为它们不会被GC。

但是当有一个部署在容器(例如Tomcat)中的Web应用程序时,每个应用程序都有自己的ClassLoader,并且可以取消部署。

我的问题是,垃圾收集器声明由将要卸载的类的静态成员引用的对象吗?

最简单的情况是单例(由引用self的静态变量实现),如果取消部署应用程序,它会被GC吗?

1 个答案:

答案 0 :(得分:2)

这可能会回答你的问题:

  

当应用程序停止时,Tomcat(甚至在6.0.24之前)会使应用程序无效   由类加载的类的所有静态类变量的值   WebAppClassLoader。在某些情况下,它可能会修复类加载器泄漏(for   例子,因为自定义ThreadLocal类,见上文),但即使   我们仍然有泄漏,它可能会减少内存丢失量

您可以阅读更多here

干杯!!