我已经知道了全世界的搜索,如果它是用JNI代码创建的,
那么我们应该删除DeleteRef,如果对象是由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);
}
谢谢
否。当本机函数返回Java(当Java调用本机时)或当调用线程与JVM分离(在本机调用Java中)时,将对本地引用进行垃圾回收。DeleteLocalRef
仅当您具有长寿命的本机函数(例如,主循环)或在循环中创建大量临时对象时,才需要显式。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句