假设我在机器A上运行了一个Java程序,现在我想要中断它,保存它的上下文并在机器B上恢复执行。是否可以这样做?怎么样?
答案 0 :(得分:1)
不,没有好办法“冻结”一个进程并在一台单独的机器上“恢复”它,该进程可能会持有各种状态(打开的文件/套接字等),而你无法随之移动它。
如果你的应用程序写得更好,使其可以集群,然后只需启动目标机器上的另一个节点,等待这两个节点同步并关闭你的原始节点。
如果它不是您正在编写的应用程序或上述内容太多,请在VM中运行您的应用程序并使用VM的功能将整个VM与正在运行的应用程序一起迁移(因此,只需使用vmotion)。
答案 1 :(得分:1)
你可能会尝试这样的事情 - 你打断程序的时间点,只是序列化它的所有属性/对象,并设置一个标志来指示它可以重新开始执行的点。现在将序列化的东西复制到另一台机器并启动程序。您的代码应该能够处理正确存储(序列化)程序状态的条件,并且只要在另一台机器上启动类,就会从该点继续。