奇怪的行为重新乳宁Java应用程序

问题描述:

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

如果通过资源,你的意思是线程,那么没有。当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