gpt4 book ai didi

java - 在 JNI 下以 native 代码获取 java 缓冲区的最有效方法是什么?

转载 作者:太空宇宙 更新时间:2023-11-04 04:07:50 27 4
gpt4 key购买 nike

问题:

我的代码 native 代码 (c/c++) 是通过 JNI 调用的。

一旦启动,它需要每秒多次从 Java 对象获取 byte[] 缓冲区以进行进一步的繁重处理。当前一个缓冲区的处理完成时, native 代码应该请求缓冲区。

最初的想法是通过 AF_INET 套接字传递缓冲区以避免 JNI 的东西,但该解决方案的工作效率不够高。

可能的解决方案:

改善传球缓冲的方法有以下几种:

  1. JNI 的东西
  2. AF_LOCAL
  3. ???

从 native 代码获取 java byte [] 缓冲区的最有效方法是什么?

最佳答案

您应该能够为此使用 JNI。

看看 JNI GetPrimitiveArrayCritical()功能。根据文档,这是否会进行复制取决于 JVM 实现,但实际上这对我来说效果很好。

或者,您可以使用专为此设计的 ByteBuffer。请注意,您需要使用其 allocateDirect() 方法创建 ByteBuffer,然后使用 GetDirectBufferAddress() 在 JNI 中获取指向缓​​冲区的指针。 .

关于java - 在 JNI 下以 native 代码获取 java 缓冲区的最有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3734301/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com