如何在两个JVM实例之间共享内存?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (146)

我在JVM(Scala)中构建了一个巨大的图形,我想反复使用它,调整算法。我不想每次都从磁盘上重新加载。有没有办法让它坐在一个JVM中,同时连接到正在开发算法的另一个JVM中?

提问于
用户回答回答于

将图表保存到磁盘,然后将其映射到内存中。两个进程都应该使用相同的内存,这将与页面缓存共享。

用户回答回答于

两个JVM听起来比需要的要复杂得多。是否考虑过做一种“热部署”设置,其中主程序加载图形,显示UI,然后请求(或自动查找)包含实际算法代码的JAR/类文件?这样,算法代码将在与图形相同的JVM中运行,但不必仅仅为了重新加载一个新的算法实现而重新加载该图形。

更新意见,以解决OP的问题:

下面是如何构造代码,以便可以交换算法。各种算法做什么并不重要,只要它们对相同的输入数据进行操作。只需像下面这样定义一个接口,并让图形算法实现它。

public interface GraphAlgorithm {
  public void doStuff(Map<whatever> myBigGraph)
}

如果算法将结果显示给某种小部件,那么也可以传递结果,或者让doStuff()返回某种结果对象。

扫码关注云+社区