'JNI Global reference'是什么?
'JNI Global reference'是什么?
我正在使用jProfiler来找出Java swing应用程序中的内存泄漏。我已经确定了一个JFrame实例的数量不断增加的情况。
这个窗口被打开,然后关闭。
使用jProfiler并查看GC根路径,只有一个引用,即“JNI全局引用”。
这是什么意思?为什么它要钩住每个框架实例?
admin 更改状态以发布 2023年5月21日
维基百科对Java Native Interface有一个很好的概述,它本质上允许Java与使用其他语言编写的本地操作系统库之间进行通信。
JNI全局引用容易发生内存泄漏,因为它们不会自动垃圾回收,程序员必须显式地释放它们。如果您没有自己编写任何JNI代码,那么您使用的库可能存在内存泄漏。
编辑在这里有关于本地引用和全局引用的更多信息,以及为什么使用全局引用(以及如何释放它们)