如何将 byte[] 转换为 bytebuffer 本机内存?
Posted
技术标签:
【中文标题】如何将 byte[] 转换为 bytebuffer 本机内存?【英文标题】:How to convert byte[] to bytebuffer native memory? 【发布时间】:2011-07-28 07:06:53 【问题描述】:我需要将大量内存传递给 jni 端来解析它。 我之前使用 GetByteArrayElements 来获取本机指针。但我发现这种方法总是复制内存,而不是直接使用内存。 所以我使用 GetDirectBufferAddress 直接获取内存以避免内存复制。 这就要求必须使用 allocateDirect 方法来分配内存。 但是给我的内存是字节数组,不是本机内存。 有没有办法将 byte[] 转换为 bytebuffer? 谢谢。
【问题讨论】:
您正在获取数据并从 VM(原始数组)内部移动到 VM 外部的位置(本机操作系统内存空间)——不幸的是,当数据在“血脑”屏障。 【参考方案1】:不幸的是,您将不得不使用put 并将您的字节数组复制到使用allocateDirect
分配的缓冲区中。
【讨论】:
那真的很不幸。内存复制无法避免,在java端或jni端。以上是关于如何将 byte[] 转换为 bytebuffer 本机内存?的主要内容,如果未能解决你的问题,请参考以下文章