2012-06-06 58 views
0

我們可以在另一個線程的一個線程上使用jmethodID初始化嗎?我問過這個問題是因爲我的jvm在運行jni程序時崩潰了,我在其中一個線程上初始化了jmethodID並在另一個線程中使用它。我在想這是否是一個原因。可以在另一個線程中使用jmethodID在一個線程上初始化嗎?

我已將jmethodID作爲全局變量保存在頂部。然後在其中一個調用中,我初始化它,並在隨後的調用中嘗試重用它。

回答

1

JNI Specification引用:

的字段或方法ID不會阻止從VM卸載從該ID已被派生的類 。班級卸載後, 方法或字段ID將變爲無效。本機代碼,因此,必須 確保:

keep a live reference to the underlying class, or 

recompute the method or field ID 

如果打算使用一個方法或字段ID爲 長時間。

+0

所以一個緩存副本將工作? –

+0

@SuhailGupta這將'打算在延長的時間段內使用方法或字段ID'。這當然很明顯? – EJP

+0

我打算在電話_之間說。 –

相關問題