2012-07-13 90 views
0

Unix的守護進程運行腳本的循環,腳本調用Java程序:JAVA {} JAVA_ARGS myClas.jar奇怪的行爲重新乳寧Java應用程序

的Java程序是重程序多線程。

問題很奇怪:第一次執行按預期工作。 但第二次執行卡住了一些地方,我找不到原因(很難調試這個)。

是否有可能在第一次執行完成後仍有未執行的資源或線程被遺留下來?

如果是,是否有可能在過程完成後立即清理並清除所有內容?

+0

什麼是'卡住某處'?它只是停止執行? – 11684 2012-07-13 09:40:47

+0

,在Java程序的第二次執行中,循環「卡住」了。它卡在某處... – kenny 2012-07-13 09:46:36

回答

1

如果通過資源,你的意思是線程,那麼沒有。當VM關閉時,堆中的所有內容,所有線程,對象和監視器都將被丟棄。但是,如果你依賴於是否存在鎖定文件或類似的文件,可能會發生死鎖。另外,啓動第二個進程時,第一個進程是否仍在運行?

如果您的java進程在第二次運行中停滯不前,您可以附加jvisualvm,它應該能夠找出卡住的位置。

+0

我不認爲第二次午餐開始之前,第一次完成,因爲:'java myjar.jar'阻止... – kenny 2012-07-13 09:49:30

+0

是的過程中使用的文件,但文件存在env(用於讀取相同文件並寫入它們的進程) – kenny 2012-07-13 09:50:07

+0

線程守護程序線程是否正確?如果沒有,他們還沒有完成,程序不會退出(除非你使用System.exit) – MadProgrammer 2012-07-13 10:38:32

相關問題