Collectives™ on Stack Overflow
Find centralized, trusted content and collaborate around the technologies you use most.
Learn more about Collectives
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
Learn more about Teams
I got a Direct Memory OOM in my program.
The program used
ByteBuffer.allocateDirect()
in java, and C++ side writes data into that buffer.
But when I tried to change the
ByteBuffer.allocateDirect()
to
ByteBuffer.allocate()
and using
GetByteArrayElements()
to write the data. I still got the same Direct Memory OOM.
I'm confused, is that
GetByteArrayElements()
copys the array using direct memory?
Thanks so much.
AFAIK GetByteArrayElements is for accessing a
byte[]
which is what backs a heap ByteBuffer.allocate().
To access a direct ByteBuffer you need to use GetDirectBufferAddress and
GetDirectBufferCapacity
http://download.java.net/jdk8/docs/technotes/guides/jni/jni-14.html
Thanks for contributing an answer to Stack Overflow!
-
Please be sure to
answer the question
. Provide details and share your research!
But
avoid
…
-
Asking for help, clarification, or responding to other answers.
-
Making statements based on opinion; back them up with references or personal experience.
To learn more, see our
tips on writing great answers
.