我正在使用Tomcat,在停止我的Web应用程序之后,仍然引用了我的Web应用程序的classloader实例.
结果是显着的内存量(主要与静态数据相关)不会被释放.迟早会导致OutOfMemoryError.
结果是显着的内存量(主要与静态数据相关)不会被释放.迟早会导致OutOfMemoryError.
我拿了一个堆栈,我意识到它由一个JNI global reference持有,这阻止了类加载器将是garbage collected.@H_502_4@
我的应用程序不使用JNI.我也不使用Apache Tomcat Native Library.我正在使用Sun / Oracle JDK.
我想跟踪这个全球参考的原因/起源.
(我的猜测是JVM内部引用了类加载器 – 但是为什么/在哪里?).@H_502_4@
题:@H_502_4@
UPDATE@H_502_4@
看来bestsss是正确的,JNI全局引用已经被jvm调试模式引入.这有助于我,但它并没有回答这个问题,所以我仍然好奇地回答了将来可能会有帮助的问题.@H_502_4@