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

标签 java java-native-interface

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

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

最佳答案

是的。

jobjectArray 指向一个引用数组。

当您将该数组的成员设置为本地引用时,您已经对该对象进行了第二次引用。如果删除本地引用,数组中的引用将保留。垃圾收集器不会处理实际对象,直到没有剩余的可访问引用为止。

关于java - 在 JNI 中构建数组时在 SetObjectArrayElement 之后使用 DeleteLocalRef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4369974/

相关文章:

java.lang.RuntimeException : org. apache.nutch.plugin.PluginRuntimeException : java. 使用nutch解析时出现lang.ClassNotFoundException

java - 热点 JIT 优化

java - JNI 包装的库寻找错误的工作目录——如何规避?

java - 从 Java 以编程方式创建 Mysql 结构

java - 如何在java中迭代和比较Hashtable<String, Map<String, Set<String>>>

Java Generic如何更改参数化子类

java - 将 C++ 库转换为 .so/.dll 共享库

java - C获取函数地址

java - 使用 Windows 服务调用使用 JNI 和 LoadLibrary 的 Java 程序的问题

java - 如何使用 Tomcat 8 在 Linux 上安装 Quercus