【发布时间】:2011-07-28 07:06:53
【问题描述】:
我需要将大量内存传递给 jni 端来解析它。 我之前使用 GetByteArrayElements 来获取本机指针。但我发现这种方法总是复制内存,而不是直接使用内存。 所以我使用 GetDirectBufferAddress 直接获取内存以避免内存复制。 这就要求必须使用 allocateDirect 方法来分配内存。 但是给我的内存是字节数组,不是本机内存。 有没有办法将 byte[] 转换为 bytebuffer? 谢谢。
【问题讨论】:
-
您正在获取数据并从 VM(原始数组)内部移动到 VM 外部的位置(本机操作系统内存空间)——不幸的是,当数据在“血脑”屏障。
标签: java performance java-native-interface bytearray bytebuffer