2017-01-28 54 views
1

我的本地方法有一個帶有byte []返回值的方法,所以我使用「NewByteArray」來分配byte [],然後使用return返回jbyteArray。 我應該釋放jbyteArray嗎?以及如何釋放jbyteArray? 謝謝。我是一名Java初學者,我的英語很差。如何釋放jbyteArray?

+0

所以你的本地函數返回回Java?如果是這樣:不,在你的本地代碼中沒有什麼需要做的事情(除非你使用'NewGlobalRef'創建了一個對數組的全局引用)。 – Michael

回答

1

您不希望在本地方法中釋放字節數組,因爲本機方法的調用方想使用Java中的數組。

既然你不持有一個全球性的參照創建數組:

垃圾收集器然後可以照顧在正確的時間,以去除數組對象,因爲本地參考了本地方法對持有一旦方法返回,數組將被刪除。

下面是如何這樣一個本地方法可以看起來像一個例子:How to return an array from JNI to Java?

+0

你的意思是GC可以釋放jbyteArray自動?所以我不需要做任何事情?謝謝。 – cpdyj

+0

@cpdyj正如Michael所指出的那樣:「除非您使用NewGlobalRef創建了對數組的全局引用」 – Calculator

+0

非常感謝。 – cpdyj