在JNI中构建数组时,在SetObjectArrayElement之后使用DeleteLocalRef

时间:2010-12-06 19:05:53

标签: java java-native-interface

在JNI中,我通过调用SetObjectArrayElement()来构建一个大型数组,以在JNI代码中插入一个本地创建的java对象。

我的问题是,在使用SetObjectArrayElement()将对象插入数组后,数组是否存储了一个引用,以便我可以使用DeleteLocalRef来释放对插入对象的本地引用?

1 个答案:

答案 0 :(得分:11)

是。

jobjectArray指向引用数组。

当您将该数组的成员设置为本地引用时,您已对该对象进行了第二次引用。如果删除本地引用,则仍保留数组中的引用。在没有剩余的可到达引用之前,垃圾收集器不会丢弃实际对象。