Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JNI与Java互操作大数据阵列_Java_Java Native Interface - Fatal编程技术网

JNI与Java互操作大数据阵列

JNI与Java互操作大数据阵列,java,java-native-interface,Java,Java Native Interface,我们正在java上制作视频流应用程序。 我们在h264编码和解码上使用JNI,但java上最大的问题是 所有数据必须通过复制从Java发送到JNI。 有一种称为ByteBuffers的解决方案,但当数据返回到java时,它就在ByteBuffers上。 我需要将数据返回到byte[]以生成数据。它再次进行复制 有一种ByteBuffer获取方法: ByteBuffer bb; ... bb.get(0)//但通过循环上的索引获取数据非常缓慢。。。 字节数据[]=新字节[bb.limit()];

我们正在java上制作视频流应用程序。 我们在h264编码和解码上使用JNI,但java上最大的问题是 所有数据必须通过复制从Java发送到JNI。 有一种称为ByteBuffers的解决方案,但当数据返回到java时,它就在ByteBuffers上。 我需要将数据返回到byte[]以生成数据。它再次进行复制

有一种ByteBuffer获取方法: ByteBuffer bb; ... bb.get(0)//但通过循环上的索引获取数据非常缓慢。。。 字节数据[]=新字节[bb.limit()]; bb.获取(数据);//这是一个“复制”再次制造数据

所以,我需要将ByteBuffer传递给JNI方法,并再次传递给在不复制的情况下生成数据

是否有任何解决方案可以在不复制的情况下将字节[]从jni获取到java make数据? 我听说过GetPrimitiveArrayCritical,但有些人称其为冻结JVM垃圾收集器

java上的mappedbytebuffer呢?
我们可以将共享数据直接用作java上的byte[]数组。

可能的重复不是真的,我想操纵java端返回的JNI数组,而不进行任何复制或重新创建。ByteBuffer似乎不是解决方案。GetPrimitiveArrayCritical似乎是解决方案,但它冻结了垃圾收集器。还有其他解决方案吗?