1

我们可以jmethodID在另一个线程的一个线程上使用初始化吗?我问这个是因为当我运行 jni 程序时我的 jvm 崩溃了,我在一个线程上初始化jmethodID并在另一个线程中使用它。我在想这是否可能是一个原因。

jmethodID通过在顶部声明来保持全局变量。然后在其中一个调用中初始化它,在随后的调用中我尝试重用它。

4

1 回答 1

0

引用JNI 规范

字段或方法 ID 不会阻止 VM 卸载从中派生 ID 的类。类卸载后,方法或字段 ID 失效。因此,本机代码必须确保:

keep a live reference to the underlying class, or

recompute the method or field ID

如果它打算长时间使用方法或字段 ID。

于 2012-06-06T07:39:18.633 回答