Java System.exit在OpenJDK 7/FreeBSD上似乎需要很长时间
我对运行的Java子进程的性能有问题 在Java下,在FreeBSD9.0-ReleaseI386上运行 对于此程序,System.exit()运行大约需要2.6秒。而我 不知道为什么。在Windows上需要0.025秒更新:它在OpenJDK 6上也运行得更快 在ktrace下运行OpenJDK7会在关机过程中显示以下一系列内容: 26795 java 1.808597调用umtx操作(0x2831e068,0xf,0,0,0xbf7a9870)Java System.exit在OpenJDK 7/FreeBSD上似乎需要很长时间,java,freebsd,openjdk,Java,Freebsd,Openjdk,我对运行的Java子进程的性能有问题 在Java下,在FreeBSD9.0-ReleaseI386上运行 对于此程序,System.exit()运行大约需要2.6秒。而我 不知道为什么。在Windows上需要0.025秒更新:它在OpenJDK 6上也运行得更快 在ktrace下运行OpenJDK7会在关机过程中显示以下一系列内容: 26795 java 1.808597调用umtx操作(0x2831e068,0xf,0,0,0xbf7a9870) 26795 java 1.838640 RET
26795 java 1.838640 RET_umtx_op-1错误60操作超时 我怎样才能知道程序在这里要做什么?或者,有没有一个简单的解决方法或方法来解决这个问题?从网络搜索的角度来看,这个问题似乎在FreeBSD的操作系统级别上经常出现,但我仍在分析我所发现的(并试图学习libthr等等)
除了打印时间戳之外,我没有添加任何关闭挂钩,系统没有添加任何关闭挂钩,没有要删除的文件,也没有runFinalizersOnExit。系统似乎在本机方法java.lang.Shutdown.halt0中花费时间,我仍在尝试分析该方法。操作数0xf是UMTX\u OP\u WAKE\u PRIVATE(请参见
/usr/src/sys/sys/UMTX.h
)。这试图唤醒内核线程,但失败了
至于它失败的原因,现在还不清楚。这可能是java中的死锁。您有任何关机挂钩吗?您正在运行哪个版本的openjdk?更新了描述以反映OpenJDK7和有关关机顺序的一些信息。