繁体   English   中英

JNI中的GlobalReferences是否可以防止GC清理对象?

[英]Do GlobalReferences in JNI prevent GC from cleaning up object?

根据这个这个 ,GlobalReferences在JNI对象,保留对象的引用和所有子域访问。 而且这是内存泄漏,不及时手动释放它。

没有明确说明的是,如果全局引用阻止对象被GC填充,或者泄漏是在引用本身中。 换句话说,我试图了解GlobalReference是否会停止将对象进行GC处理,例如,如果我在Java空间中对此对象有了额外的引用,或者对象是否可以被GC处理但泄漏仍在参考对象本身。

我倾向于认为是前者,因为存在弱的全局引用,根据文档,这将使GC原始对象死亡-但我决定要求保持安全。

如果GlobalReference将停止要进行GC处理的对象

是的,就是这种情况。 GC知道JNI全局引用,并将其视为GC的根。

JNI全局引用也在JVMTI中公开,您可以在JProfiler之类的工具中看到它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM