ZSa*_*Lv0 8 java-native-interface
我已经在世界各地搜索过,知道如果它是在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);
}
Run Code Online (Sandbox Code Playgroud)
谢谢
不会。当本机函数返回到 Java(当 Java 调用本机时)或当调用线程与 JVM 分离时(在本机调用 Java 时),本地引用会被垃圾收集。DeleteLocalRef仅当您有一个长期存在的本机函数(例如,主循环)或在循环中创建大量瞬态对象时,才需要显式。
| 归档时间: |
|
| 查看次数: |
3472 次 |
| 最近记录: |