簡體   English   中英

如何保存java程序的狀態並在以后獲取?

[英]How do I save the state of a java program and pick it up later?

我正在嘗試運行在cluster上使用WEKA libraries的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相關的頁面,我相當肯定這不是我想要的。

看看docker的checkpoint命令。 它提供了保存docker容器的當前狀態然后恢復它的能力。 我一直在使用它來進行類似的使用 - 基於JVM的系統。 在我的情況下,我使用它,因為初始化需要很長時間。 通過使用檢查點,我可以多次以已知狀態重新啟動容器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM