我正在尝试运行在WEKA libraries
上使用cluster
的java程序。
此群集在12小时后超时提交的作业,我无法更改此事实,因为我是学生而不负责群集。
我想要做的是保存JVM的状态,然后重新加载它。基本上关闭程序一段时间,然后从我离开的地方继续。
这可能吗?
我认为我不能(很容易)将WEKA对象本身的变量状态输出到带有OOS的文件并重新加载它们,因为我使用的是WEKA库,它会重写这些机器学习程序的代码非常复杂。 (虽然这可能是我必须做的)
我尝试使用一个名为javaflow
的库,我从阅读中想到可能会实现这一点,但我无法让它工作。当我尝试进行计数时,我遇到了这个错误:
Apr 20, 2016 9:15:12 PM org.apache.commons.javaflow.bytecode.StackRecorder execute
SEVERE: stack corruption. Is class test_javaflow.MyRunnable instrumented for javaflow?
java.lang.IllegalStateException: stack corruption. Is class test_javaflow.MyRunnable instrumented for javaflow?
at org.apache.commons.javaflow.bytecode.StackRecorder.execute(StackRecorder.java:102)
at org.apache.commons.javaflow.Continuation.continueWith(Continuation.java:170)
at org.apache.commons.javaflow.Continuation.startWith(Continuation.java:129)
at org.apache.commons.javaflow.Continuation.startWith(Continuation.java:102)
at test_javaflow.Test_Javaflow.main(Test_Javaflow.java:16)
谷歌搜索这个错误会出现几个与JasperSoft相关的页面,我相当肯定这并不是我想要的。
答案 0 :(得分:0)
查看docker的checkpoint命令。它提供了保存docker容器的当前状态然后恢复它的能力。我一直在使用它来进行类似的使用 - 基于JVM的系统。在我的情况下,我使用它,因为初始化需要很长时间。通过使用检查点,我可以多次以已知状态重新启动容器。