2010-12-06 26 views
6

在JNI中,我通過調用SetObjectArrayElement()來插入在JNI代碼中本地創建的java對象來構造一個大數組。在JNI中構建數組時使用DeleteLocalRef

我的問題是,在使用SetObjectArrayElement()將對象插入到數組後,數組是否存儲引用,以便我可以使用DeleteLocalRef將本地引用釋放到插入的對象?

回答

10

是的。

jobjectArray指向一個引用數組。

當您將該數組的成員設置爲本地引用時,您已經對該對象進行了第二次引用。如果刪除本地引用,則數組中的引用將保留。垃圾收集器不會處理實際的對象,直到沒有剩餘的可到達引用。