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

Noa*_*ins 8 java java-native-interface

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

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

And*_*mas 11

是.

jobjectArray指向一组引用.

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