2011-07-28 19 views
4

我需要將大量內存傳遞給jni端來解析它。 我用GetByteArrayElements來獲取本機指針,但我發現這種方法總是複製內存,而不是直接使用內存。 所以我使用GetDirectBufferAddress直接獲取內存以避免內存拷貝。 這要求必須使用allocateDirect方法來分配內存。 但是,給我的內存是字節數組,而不是本機內存。 有沒有辦法將byte []轉換爲bytebuffer? 謝謝。如何將byte []轉換爲bytebuffer本機內存?

+0

您正在從VM(原始陣列)內取出數據並將其移動到VM(本機OS內存空間)之外 - 不幸的是,由於數據在「血腦」屏障上轉換。 –

回答

4

不幸的是,您將不得不使用put並將您的字節數組複製到分配有allocateDirect的緩衝區中。

+0

這真的很不幸。內存拷貝無法避免,在java端或jni端。 – PDF1001