【问题标题】:Shared memory between Java and C++Java 和 C++ 之间的共享内存
【发布时间】:2016-07-17 21:53:18
【问题描述】:

我正在尝试在 C++ 中创建一些内存并在 Java 中访问它。 在 C++ 方面,我知道我可以使用 shm_openmmap 来获得 内存区域并将一些数据写入其中。但是,怎么打开 Java端的内存映射文件?有人建议使用MappedByteBuffer 但是如何访问提供给shm_open 的“路径”(它只存在于内存中,因此无法从中初始化File)。我可以在不使用 JNI 的情况下做到这一点吗?

【问题讨论】:

  • 您提到的功能似乎表明了Linux环境。是这样吗?还是您需要更便携的解决方案?无论如何,我建议使用更完善的进程间通信。为什么不只使用套接字。
  • @Cheersandhth.-Alf 是的,它是 linux 环境。不一定要便携。出于性能原因(以避免复制),我们希望使用共享内存。
  • @BevynQ 似乎您发布的链接无法解决我的问题。它也是基于 Windows 的。

标签: java c++ shared-memory mmap


【解决方案1】:

Linux环境下共享内存有特殊的内存段:

/dev/shm

shm_open 中提供的名称(例如“elo320”)用于创建文件

/dev/shm/elo320

这个路径可以在Java中使用。

【讨论】:

    猜你喜欢
    • 2023-03-31
    • 2021-06-01
    • 1970-01-01
    • 2018-03-19
    • 1970-01-01
    • 2013-02-14
    • 1970-01-01
    • 2013-05-09
    • 1970-01-01
    相关资源
    最近更新 更多