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

标签 java c++ java-native-interface

<分区>

我正在尝试使用 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/

相关文章:

android - 在 galaxy/nexus 上发送 RIL 命令

java - 如何更改 MPAndroidChart PieChart 中的百分比文本颜色?

java - 使用 Maven 发布不同的配置

c++ - 当字符串表示零时使用atoi?

c++ - "Cannot open source file"为已安装SDK的头文件

tomcat - 如何将 .war 文件和 jni 库文件部署到 Web 服务器上?

java - 在 jackson 生成的 json 中包装 Protocol Buffer 时 java 出错?

java - Java中的序列化需要什么?

c++ - 对于浮点值 a : Does a*0. 0 == 0.0 对于 a 的有限值总是求值为真?

java - 通过 JNI 将 C++ 类返回给 Java