【问题标题】:How to convert byte[] to bytebuffer native memory?如何将 byte[] 转换为 bytebuffer 本机内存?
【发布时间】:2011-07-28 07:06:53
【问题描述】:

我需要将大量内存传递给 jni 端来解析它。 我之前使用 GetByteArrayElements 来获取本机指针。但我发现这种方法总是复制内存,而不是直接使用内存。 所以我使用 GetDirectBufferAddress 直接获取内存以避免内存复制。 这就要求必须使用 allocateDirect 方法来分配内存。 但是给我的内存是字节数组,不是本机内存。 有没有办法将 byte[] 转换为 bytebuffer? 谢谢。

【问题讨论】:

  • 您正在获取数据并从 VM(原始数组)内部移动到 VM 外部的位置(本机操作系统内存空间)——不幸的是,当数据在“血脑”屏障。

标签: java performance java-native-interface bytearray bytebuffer


【解决方案1】:

不幸的是,您将不得不使用put 并将您的字节数组复制到使用allocateDirect 分配的缓冲区中。

【讨论】:

  • 那真的很不幸。内存复制无法避免,在java端或jni端。
猜你喜欢
  • 2020-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-08
  • 1970-01-01
  • 2012-02-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多