gpt4 book ai didi

java-native-interface - (JNI) java 代码返回的对象是否需要 DeleteLocalRef?

转载 作者:行者123 更新时间:2023-12-04 08:35:38 25 4
gpt4 key购买 nike

我已经在世界各地搜索过,知道如果它是在 JNI 代码中创建的,我们应该 DeleteLocalRef
那么,如果对象是新的并由 Java 代码返回,我是否也应该删除它?如:

// in java code
public SomeObject funcInJavaCode() {
return new SomeObject();
}
// in jni code
funcInJNI {
jobject obj = env->CallObjectMethod(...);
...
// do i have to delete the obj here???
env->DeleteLocalRef(obj);
}

谢谢

最佳答案

否。当 native 函数返回到 Java(当 Java 调用 native 时)或当调用线程与 JVM 分离时(在 native 调用 Java 时),本地引用会被垃圾收集。您需要明确的 DeleteLocalRef仅当您有一个长期存在的 native 函数(例如,主循环)或在循环中创建大量 transient 对象时。

关于java-native-interface - (JNI) java 代码返回的对象是否需要 DeleteLocalRef?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18567851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com