java - 奇怪的行为在循环中重新运行java应用程序

标签 java multithreading unix resources daemon

Unix守护进程循环运行一个脚本,该脚本调用一个java程序:java {java_args} myClas.jar

java程序是具有多线程的重型程序。

问题很奇怪:第一次执行按预期工作。 但第二次执行卡在某个地方,我找不到原因(很难调试)。

第一次执行完成后是否有可能仍然存在未清理的资源或线程?

如果是,是否可以在进程完成后立即清理并杀死所有内容?

最佳答案

如果您所说的资源指的是线程,那么就不是。当虚拟机关闭时,堆上的所有内容、所有线程、对象和监视器都将被丢弃。但是,如果您依赖文件的存在/不存在来进行锁定或类似的操作,则可能会出现死锁。另外,当您启动第二个进程时,第一个进程是否可能仍在运行?

如果您的 java 进程在第二次运行时卡住,您可以附加 jvisualvm并应该能够找出它卡在哪里。

关于java - 奇怪的行为在循环中重新运行java应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11467865/

相关文章:

java - 使用 Java 提取逗号分隔的数字或单词列表

java - NUllPointerException 元素 webdriver

java - 为什么 int[] 上的 Arrays.asList 返回 List<int[]> 而不是 List<int>?

java - 安卓 : AsyncTask onPostExecute is getting null reply

java - 线程消耗的内存

Java 无法解析日期异常 yyyyMMdd h :m a

c++ - 为什么允许编译器优化这个繁忙的等待循环?

c++ - pthread 启动函数中的 return() 与 pthread_exit()

linux - 在手册页中使用 <> 来指示可选的空格

linux - uniq 命令未检测到重复行