Unix守护进程运行一个脚本循环,该脚本调用一个java程序:java {java_args} myClas.jar
java程序是具有多线程的重型程序。
问题很奇怪:第一次执行按预期工作。但是第二次执行卡在某个地方,我找不到原因(很难调试)。
是否有可能在第一次执行完成后仍有未清理的资源或执行此执行留下的线程?
如果是,是否可以在过程完成后立即清理并杀死所有内容?
Unix守护进程运行一个脚本循环,该脚本调用一个java程序:java {java_args} myClas.jar
java程序是具有多线程的重型程序。
问题很奇怪:第一次执行按预期工作。但是第二次执行卡在某个地方,我找不到原因(很难调试)。
是否有可能在第一次执行完成后仍有未清理的资源或执行此执行留下的线程?
如果是,是否可以在过程完成后立即清理并杀死所有内容?
如果通过资源,你的意思是线程,那么没有。当虚拟机关闭时,堆上的所有东西、所有线程、对象和监视器都会被处理掉。但是,如果您依赖文件的存在/不存在来锁定或类似的东西,则可能会出现死锁。另外,当您启动第二个进程时,第一个进程是否可能仍在运行?
如果您的 java 进程在第二次运行时被卡住,您可以附加jvisualvm
到它并且应该能够找出它卡在哪里。