0

プログラムにダイレクトメモリルームがあります。

ByteBuffer.allocateDirect()JavaおよびC++側で使用されるプログラムは、そのバッファーにデータを書き込みます。しかし、にを変更してデータを書き込むために使用しようとしByteBuffer.allocateDirect()たときByteBuffer.allocate()GetByteArrayElements()私はまだ同じダイレクトメモリOOMを手に入れました。

私は混乱しています、それはGetByteArrayElements()ダイレクトメモリを使用して配列をコピーしますか?

本当にありがとう。

4

1 に答える 1

3

AFAIK GetByteArrayElements はbyte[]、ヒープ ByteBuffer.allocate() をサポートするものにアクセスするためのものです。

直接 ByteBuffer にアクセスするには、GetDirectBufferAddress と GetDirectBufferCapacity を使用する必要があります

http://download.java.net/jdk8/docs/technotes/guides/jni/jni-14.html

于 2012-08-31T19:25:44.347 に答える