首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在两个JVM实例之间共享内存?

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

Stack Overflow用户
提问于 2009-07-28 17:47:11
回答 9查看 11.3K关注 0票数 18

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

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2009-07-28 17:52:50

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

票数 12
EN

Stack Overflow用户

发布于 2009-07-28 20:20:27

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

更新以在评论中解决OP的问题:

下面是你如何组织你的代码,使你的算法是可交换的。不同的算法做什么并不重要,只要它们对相同的输入数据进行操作即可。只需定义一个如下所示的接口,并让您的图形算法实现它。

代码语言:javascript
复制
public interface GraphAlgorithm {
  public void doStuff(Map<whatever> myBigGraph)
}

如果您的算法要将结果显示到某种小部件上,您也可以将其传入,或者让doStuff()返回某种results对象。

票数 4
EN

Stack Overflow用户

发布于 2009-07-29 15:47:47

你有没有考虑过OSGi平台?它驻留在单个JVM中,但将允许您使用算法升级捆绑包,而无需重启平台。因此,您可能会有一个长期运行的捆绑包,其中包含巨大的数据结构和访问数据的短期算法捆绑包。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1195633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档