<分区>
我正在尝试使用 JNI 来使用 C++ 处理大块数据,但是我无法理解函数 SetArrayRegion 将逐个元素复制数组元素的天气,或者它是否可以将数据留在原地并将其返回给调用方java函数。
以下文档是我一直在阅读的地方,但仍不清楚发生了什么。 http://download.oracle.com/javase/1.5.0/docs/guide/jni/spec/functions.html
谢谢你的帮助。
<分区>
我正在尝试使用 JNI 来使用 C++ 处理大块数据,但是我无法理解函数 SetArrayRegion 将逐个元素复制数组元素的天气,或者它是否可以将数据留在原地并将其返回给调用方java函数。
以下文档是我一直在阅读的地方,但仍不清楚发生了什么。 http://download.oracle.com/javase/1.5.0/docs/guide/jni/spec/functions.html
谢谢你的帮助。
最佳答案
通常,当您通过 JNI 传递数据时,它会跨 JNI 边界进行复制。如果您想要一种将数据从 native 空间向上传递到 Java 空间的有效机制,那么您应该了解如何访问 NIO 直接字节缓冲区。这可以提供一段可以在 native 代码和 Java 代码之间共享的内存。看GetDirectBufferAddress
.
关于java - 将数组从 JNI 函数传回而不复制它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3944717/