在JNI中,我通过调用SetObjectArrayElement()
来构建一个大型数组,以在JNI
代码中插入一个本地创建的java对象。
我的问题是,在使用SetObjectArrayElement()
将对象插入数组后,数组是否存储了一个引用,以便我可以使用DeleteLocalRef来释放对插入对象的本地引用?
答案 0 :(得分:11)
是。
jobjectArray指向引用数组。
当您将该数组的成员设置为本地引用时,您已对该对象进行了第二次引用。如果删除本地引用,则仍保留数组中的引用。在没有剩余的可到达引用之前,垃圾收集器不会丢弃实际对象。