是否有任何Java VM可以将其状态保存到文件然后重新加载该状态?
如果是这样,哪些?
另一个选项(在您的情况下可能相关或不相关)是在虚拟机内运行JVM(任何JVM).大多数虚拟机提供了存储和恢复状态的选项,因此您应该能够重新启动PC,在VM恢复时启动VM并让Java进程从原来的位置开始.
我在工作时使用VMWare Player进行IE测试,当我关闭并稍后重新打开它时,这就像上面说的那样工作.我通常不会在应用程序在VM中执行任何操作时执行此操作,但只要它们不访问任何外部资源(例如网络套接字),我希望它能够像VM永远不会关闭一样工作.
延续可能是您正在寻找的:
[...]第一类延续,它是一种结构,它使编程语言能够在任何点保存执行状态,并在程序的稍后时刻返回到该点.
Java至少有两个延续库:RIFE continuation和javaflow.我知道javaflow至少允许将状态序列化为磁盘:
一个
Continuation
可以被序列化,如果它捕获的所有对象也可序列化.换句话说,所有局部变量(包括所有this
对象)都需要标记为Serializable
.在此示例中,您需要将MyRunnable类标记为Serializable.序列化的延续可以发送到另一台机器或以后使用.- Javaflow教程