Unix守护进程循环运行脚本,脚本调用java程序: java {java_args} myClas.jar
java程序是具有多个线程的繁重程序。
这个问题非常奇怪:第一次执行就像预期的那样工作。但是第二次执行被卡住了,我找不到原因(很难调试)。
有没有可能在第一次执行完成后,仍有未清理的资源或线程从该执行中剩余?
如果是,是否可以在进程完成后立即清理和杀死所有内容?
发布于 2012-07-13 09:39:55
如果您所说的资源是指线程,那么不是。当VM关闭时,堆上的所有东西、所有线程、对象和监视器都会被处理掉。但是,如果您依赖于文件的存在/不存在来进行锁定或类似的操作,则可能会出现死锁。另外,当您启动第二个进程时,第一个进程是否仍在运行?
如果您的java进程在第二次运行时被卡住,您可以将jvisualvm
附加到它,并且应该能够找出它被卡住的位置。
https://stackoverflow.com/questions/11467865
复制