我正在开发一个需要与C应用程序通信的Java应用程序。C应用程序使用共享内存和mmap进行通信,我需要让Java应用程序能够访问相同的内存。
我的第一次尝试是使用JNI调用从共享内存中检索数据,但每个JNI调用的开销影响了性能,因此我希望找到一种方法在Java中访问该内存并在Java端进行数据检索。
我想要的解决方案如下:
- 使用一个JNI调用来获取我需要连接到的共享内存位置
- 创建一个新的FileChannel()
- 使用该FileChannel使用map()创建一个MappedByteBuffer
这是最好的方法吗?而且,我不确定如何实际创建FileChannel以指向正确的内存位置。