想想jni中的这种情况:
我需要知道的是function3中创建的LocalReference什么时候会自动释放。是函数3返回的时间还是函数1返回的时间?
我试着问gpt4和claude3。 gpt4 的答案是 function1 返回的时间。 claude3的答案是function3返回的时间。
我需要知道的是function3中创建的LocalReference什么时候会自动释放。
答案是native调用什么时候会返回到java,所以当function3返回到java中的function2时。本地引用在本机方法调用期间有效。它们会在本机方法返回后自动释放。
更多android相关参考:
https://developer.android.com/training/articles/perf-jni#local-and-global-references
传递给本机方法的每个参数,以及几乎每个对象 JNI 函数返回的是“本地引用”。这意味着 它在当前本机方法的持续时间内有效 当前线程。 即使对象本身在之后继续存在 原生方法返回,引用无效。