Java中是不是有可移植的共享内存机制?
Posted
技术标签:
【中文标题】Java中是不是有可移植的共享内存机制?【英文标题】:Is there a portable shared memory mechanism in Java?Java中是否有可移植的共享内存机制? 【发布时间】:2014-05-06 18:14:52 【问题描述】:我们正在寻找一种共享内存机制,在 Java 中无需复制即可在进程之间传输大量数据。它必须是可移植的(包括 Windows)。有这样的事吗?我们正在考虑使用 mmap-ed 文件,因为它们是可移植的,但是它们的内容被写入磁盘,这是不可取的。有替代品吗? 否则,Windows 有页面文件支持的部分;有没有一种简单的方法可以在 Java 中使用这些?如果我们可以在 *nix 和 Windows 上使用其他一些共享内存机制,我们可能没问题。
【问题讨论】:
对我来说这对于普通的 Java 来说听起来太低级了......但我可能不知道 Java 的全部功能 【参考方案1】:OpenHFT 中有几个解决方案。这些支持可以同时读取和写入的滚动队列,以及完全在堆外的 SharedHashMap。在 Linux 中,您可以“写入”到 tmpfs 文件系统,而在 Windows 中,您可以使用 Ramdrive。
这些库支持通过 TCP 在机器之间进行复制。 (Chronicle 的复制已经使用了一段时间,但 SharedHashMap 的复制仍处于测试阶段)
虽然它可以跨操作系统移植,但它使用 OpenJDK/HotSpot JVM 内部的一些功能,因此它不适用于 IBM JVM AFAIK。
注意:这些库支持使用一种不会产生垃圾的序列化形式读取和写入数据,或者就地使用堆外数据结构。也就是说,您无需反序列化整个对象即可访问其中的一部分。
【讨论】:
以上是关于Java中是不是有可移植的共享内存机制?的主要内容,如果未能解决你的问题,请参考以下文章