Unix守护进程循环运行一个脚本,该脚本调用一个java程序:java {java_args} myClas.jar
java程序是具有多线程的重型程序。
问题很奇怪:第一次执行按预期工作。 但第二次执行卡在某个地方,我找不到原因(很难调试)。
第一次执行完成后是否有可能仍然存在未清理的资源或线程?
如果是,是否可以在进程完成后立即清理并杀死所有内容?
最佳答案
如果您所说的资源指的是线程,那么就不是。当虚拟机关闭时,堆上的所有内容、所有线程、对象和监视器都将被丢弃。但是,如果您依赖文件的存在/不存在来进行锁定或类似的操作,则可能会出现死锁。另外,当您启动第二个进程时,第一个进程是否可能仍在运行?
如果您的 java 进程在第二次运行时卡住,您可以附加 jvisualvm
并应该能够找出它卡在哪里。
关于java - 奇怪的行为在循环中重新运行java应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11467865/