将数组从JNI函数传回,而不复制它

时间:2010-10-15 17:50:02

标签: java c++ java-native-interface

我正在尝试使用JNI使用C ++处理大块数据但是我无法理解天气,函数SetArrayRegion将按元素复制数组元素,或者它是否可以将数据留在原位并将其返回到调用java函数。

以下文档是我一直在阅读的内容,但目前仍不清楚发生了什么。 http://download.oracle.com/javase/1.5.0/docs/guide/jni/spec/functions.html

感谢您的帮助。

1 个答案:

答案 0 :(得分:4)

通常,当您通过JNI传递数据时,它将被复制到JNI边界。如果您想要一种有效的机制来将数据从本地空间传递到Java空间,那么您应该了解如何访问NIO直接字节缓冲区。这可以提供可以在本机代码和Java代码之间共享的一部分内存。请看GetDirectBufferAddress