我只是想知道是否可以将正在运行的Java程序转储到文件中,然后重新启动它(同一台机器)
这听起来有点奇怪,但谁知道呢
---更新-------
是的,这是一个进程的休眠功能,而不是一个完整的系统.但谷歌'休眠jvm过程',你会明白我的痛苦.
linux上有一个关于这个主题的问题(这里).很快,就可以使用CryoPID来休眠一个进程(远非100%可靠).
几年前在stackoverflow中提出了类似的问题.
有了JVM,我有根据的猜测是,休眠应该更容易,并非总是可行,并且在100%时不可靠(例如UI和文件).
序列化应用程序的持久状态是一种选择,但它不是问题的答案.
Fra*_*kie 10
这可能有点矫枉过正,但你可以做的一件事是运行VirtualBox之类的东西并暂停/保存机器.
还有:
- 来自Apache的JavaFlow应该做到这一点,即使我没有亲自尝试过.
- 制动器可能正是您正在寻找的
对您的问题的任何解决方案都有很多限制:所有外部连接可能会或可能不会在您尝试冻结和唤醒它们时存在.想想另一方面的超时,甚至停止通信伙伴 - 从Web服务器到数据库甚至本地文件的任何事情.
您要求一个通用的解决方案,没有您的程序的任何内部知识,您想要休眠.您可以随时执行的操作是序列化程序状态的一部分,即重启程序所需的部分.在长时间运行的计算(想想几天或几周)中实现重启点是或者至少是常识.因此,当您在程序运行一周后遇到程序中的错误时,您可以修复该错误并节省一些计算天数.
与使用的完整内存大小相比,程序的状态可能非常小.
您询问"是否可以将正在运行的Java程序转储到文件中,然后重新启动它". - 是的,但我不会建议一个通用的自动解决方案,必须将你的程序作为一个黑盒子来处理,但我建议你将程序状态和程序重启点的重要部分外部化.
希望有所帮助 - 即使它比你希望的更复杂.
| 归档时间: |
|
| 查看次数: |
2049 次 |
| 最近记录: |