JNI中的弱全局引用是什么?它与全局引用和本地引用有何不同?
答案 0 :(得分:4)
我认为您的问题的答案可以在这里找到: http://java.sun.com/docs/books/jni/html/refs.html
正如其写的:
本地和全局引用具有不同的生命周期。本地参考 自动释放,而全局和弱全局引用 在程序员释放它们之前一直有效。
本地引用和全局引用之间的区别是:上下文
本地引用只是一个局部变量。一旦你离开它的上下文就会破坏底层对象(比如从定义它的本机函数返回)。
与全局引用一样,弱全局引用仍然有效 本机方法调用和跨不同的线程。与全球不同 引用,弱全局引用不保留底层对象 从垃圾收集。
弱全局引用和全局引用之间的区别在于,如果需要,可以对弱引用的对象进行收集(如果内存不足)。
答案 1 :(得分:-1)
如果某个对象只有弱引用,则gc可以将其从内存中清除。
软参考是指当gc想要清除对象时不会阻止gc的参考。但是如果一个软引用引用的对象gc尝试在可能的情况下将对象保留在内存中。