Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 恒定静态字段是否会导致web应用程序内存泄漏?_Java_Memory Leaks_Garbage Collection - Fatal编程技术网

Java 恒定静态字段是否会导致web应用程序内存泄漏?

Java 恒定静态字段是否会导致web应用程序内存泄漏?,java,memory-leaks,garbage-collection,Java,Memory Leaks,Garbage Collection,我知道静态字段会导致内存泄漏,因为它们不会被GCD 但是当有一个web应用程序部署在一个容器(比如Tomcat)中时,每个应用程序都有自己的类加载器,并且可以取消部署 我的问题是,垃圾收集器是否声明要卸载的类的静态成员引用的对象 最简单的情况是单例(由引用self的静态变量实现),如果应用程序未部署,它是否会被GCed?这可能会回答您的问题: 当应用程序停止时,Tomcat(甚至在6.0.24之前)会使 由加载的类的所有静态类变量的值 WebAppClassLoader。在某些情况下,它可能修复

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

但是当有一个web应用程序部署在一个容器(比如Tomcat)中时,每个应用程序都有自己的类加载器,并且可以取消部署

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


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

这可能会回答您的问题:

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

你可以读更多


干杯

据我所知,如果类是GCed,静态字段是GCed。好的,但是如果一个类被静态字段引用,它会是GCed吗?例如,在单例中……如果类由它自己的静态字段引用,那么这不会阻止收集。请记住,如果不命名类,就不能引用单例。命名类(在字符串之外)是一个引用。关于
静态final
字段呢?我相信这是关于非最终静态字段的,不是吗?提供的链接中的示例是一个
final static
byte数组,它如何清理它?