【发布时间】:2010-11-10 15:57:11
【问题描述】:
我正在开发一个需要与 C 应用程序通信的 Java 应用程序。 C 应用程序使用共享内存和 mmap 进行通信,我需要 Java 应用程序能够访问相同的内存。
我的第一次尝试涉及使用 JNI 调用从共享内存中检索数据,但是每个 JNI 调用的开销都会影响性能,所以我想要一种方法来访问 Java 中的内存并在Java 方面。
我的想法是我需要执行以下操作:
- 使用一个 JNI 调用来获取我需要附加到的共享内存位置的位置
- 创建一个新的 FileChannel()
- 使用该 FileChannel 通过 map() 创建一个 MappedByteBuffer
这是最好的方法吗?另外,我不确定如何实际创建 FileChannel 以指向正确的内存位置。
【问题讨论】:
-
恕我直言,你不能,但我喜欢被纠正