Как сохранить состояние Java-программы и забрать его позже?

Я пытаюсь запустить программу Java, которая использует WEKA libraries на cluster,

Этот кластер истекает через 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, и я уверен, что это не то, что я ищу.

1 ответ

Посмотрите на команду контрольной точки докера. Он предоставляет возможность сохранить текущее состояние контейнера докера и затем возобновить его. Я использовал его для аналогичного использования - системы на основе JVM. В моем случае я использую его, потому что инициализация занимает много времени. Используя контрольную точку, я могу перезапустить контейнер в известном состоянии несколько раз.

Другие вопросы по тегам