Java 恒定静态字段是否会导致web应用程序内存泄漏?
我知道静态字段会导致内存泄漏,因为它们不会被GCD 但是当有一个web应用程序部署在一个容器(比如Tomcat)中时,每个应用程序都有自己的类加载器,并且可以取消部署 我的问题是,垃圾收集器是否声明要卸载的类的静态成员引用的对象Java 恒定静态字段是否会导致web应用程序内存泄漏?,java,memory-leaks,garbage-collection,Java,Memory Leaks,Garbage Collection,我知道静态字段会导致内存泄漏,因为它们不会被GCD 但是当有一个web应用程序部署在一个容器(比如Tomcat)中时,每个应用程序都有自己的类加载器,并且可以取消部署 我的问题是,垃圾收集器是否声明要卸载的类的静态成员引用的对象 最简单的情况是单例(由引用self的静态变量实现),如果应用程序未部署,它是否会被GCed?这可能会回答您的问题: 当应用程序停止时,Tomcat(甚至在6.0.24之前)会使 由加载的类的所有静态类变量的值 WebAppClassLoader。在某些情况下,它可能修复
最简单的情况是单例(由引用self的静态变量实现),如果应用程序未部署,它是否会被GCed?这可能会回答您的问题: 当应用程序停止时,Tomcat(甚至在6.0.24之前)会使 由加载的类的所有静态类变量的值 WebAppClassLoader。在某些情况下,它可能修复类加载器泄漏(例如 例如,由于自定义ThreadLocal类,请参见上文),但即使 我们仍然存在泄漏,这可能会减少内存丢失量 你可以读更多
干杯 据我所知,如果类是GCed,静态字段是GCed。好的,但是如果一个类被静态字段引用,它会是GCed吗?例如,在单例中……如果类由它自己的静态字段引用,那么这不会阻止收集。请记住,如果不命名类,就不能引用单例。命名类(在字符串之外)是一个引用。关于
静态final
字段呢?我相信这是关于非最终静态字段的,不是吗?提供的链接中的示例是一个final static
byte数组,它如何清理它?