我们可以jmethodID
在另一个线程的一个线程上使用初始化吗?我问这个是因为当我运行 jni 程序时我的 jvm 崩溃了,我在一个线程上初始化jmethodID
并在另一个线程中使用它。我在想这是否可能是一个原因。
我jmethodID
通过在顶部声明来保持全局变量。然后在其中一个调用中初始化它,在随后的调用中我尝试重用它。
我们可以jmethodID
在另一个线程的一个线程上使用初始化吗?我问这个是因为当我运行 jni 程序时我的 jvm 崩溃了,我在一个线程上初始化jmethodID
并在另一个线程中使用它。我在想这是否可能是一个原因。
我jmethodID
通过在顶部声明来保持全局变量。然后在其中一个调用中初始化它,在随后的调用中我尝试重用它。
引用JNI 规范:
字段或方法 ID 不会阻止 VM 卸载从中派生 ID 的类。类卸载后,方法或字段 ID 失效。因此,本机代码必须确保:
keep a live reference to the underlying class, or recompute the method or field ID
如果它打算长时间使用方法或字段 ID。