如何将正在运行的Java程序从一台机器迁移到另一台机器?

时间:2013-04-09 04:22:05

标签: process jvm runtime java

假设我在机器A上运行了一个Java程序,现在我想要中断它,保存它的上下文并在机器B上恢复执行。是否可以这样做?怎么样?

2 个答案:

答案 0 :(得分:1)

不,没有好办法“冻结”一个进程并在一台单独的机器上“恢复”它,该进程可能会持有各种状态(打开的文件/套接字等),而你无法随之移动它。

如果你的应用程序写得更好,使其可以集群,然后只需启动目标机器上的另一个节点,等待这两个节点同步并关闭你的原始节点。

如果它不是您正在编写的应用程序或上述内容太多,请在VM中运行您的应用程序并使用VM的功能将整个VM与正在运行的应用程序一起迁移(因此,只需使用vmotion)。

答案 1 :(得分:1)

你可能会尝试这样的事情 - 你打断程序的时间点,只是序列化它的所有属性/对象,并设置一个标志来指示它可以重新开始执行的点。现在将序列化的东西复制到另一台机器并启动程序。您的代码应该能够处理正确存储(序列化)程序状态的条件,并且只要在另一台机器上启动类,就会从该点继续。