【发布时间】:2017-10-11 08:33:33
【问题描述】:
根据this 和this,对JNI 中的对象的GlobalReferences,保持对象的引用和所有子字段可访问。不及时手动释放它是内存泄漏。
没有明确说明的是全局引用是否会阻止对象被 GC,或者泄漏是在引用本身中。换句话说,我试图了解 GlobalReference 是否会阻止对象被 GC 处理,就像我在 Java 空间中有一个额外的引用一样,或者对象是否可以被 GC 处理但泄漏在引用对象本身。
我倾向于相信是前者,因为存在弱全局引用,根据文档,这将使 GC 原始对象死亡 - 但我决定要求安全起见。
【问题讨论】:
-
您是否考虑过查阅 JNI 规范?
-
这里docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/…没有明确说明实际做了什么。
-
全局引用只有在丢失时才会泄漏。
标签: java memory-leaks garbage-collection java-native-interface