根据this和this,对JNI中对象的GlobalReferences,保持对象的引用和所有可访问的子字段。这是一个内存泄漏,不能立即手动释放它。
未明确说明的是,全局引用是否会阻止对象成为GC,或者泄漏是否在引用本身中。换句话说,我试图理解GlobalReference是否会阻止对象进入GC,就像我在Java空间中有一个额外的引用,或者如果obejct可能是GC那样但是泄漏在参考物体本身。
我倾向于认为是前者,因为弱的全球参考存在,根据文档会让GC原始对象死亡 - 但我决定要求安全。
答案 0 :(得分:2)
如果GlobalReference将使对象停止GC'
是的,就是这样。 GC了解JNI全局引用并将其视为GC根源。
JNI全局引用也在JVMTI中公开,您可以在JProfiler等工具中看到它们。