繁体   English   中英

System.exit在OpenJDK 7 / FreeBSD上似乎花费很长时间

[英]System.exit appears to take a long time on OpenJDK 7 / FreeBSD

我在FreeBSD 9.0-RELEASE i386上运行的Java下运行的Java子进程的性能出现问题。

对于此程序,System.exit()大约需要2.6秒才能运行。 我不知道为什么。 在Windows上需要0.025秒。 更新:它还在OpenJDK 6上运行得更快。

在ktrace下运行OpenJDK7会在关机期间显示以下的大量序列:

26795 Java 1.808597调用_umtx_op(0x2831e068,0xf,0,0,0xbf7a9870)
26795 Java 1.838640 RET _umtx_op -1 errno 60操作超时

我如何弄清楚程序在这里试图做什么? 或者,是否有简单的解决方法或解决方案? 通过Web搜索来判断,这个问题似乎很频繁地出现在FreeBSD的OS级别上,但是我仍在分析发现的内容(并尝试学习libthr等)。

除了打印时间戳记之外,我没有添加任何关机钩子,系统也没有添加关机钩子,没有要删除的文件,也没有runFinalizersOnExit。 系统似乎在本机方法java.lang.Shutdown.halt0中花费时间,我仍在尝试分析该方法。

操作数0xf为UMTX_OP_WAKE_PRIVATE(请参见/usr/src/sys/sys/umtx.h )。 这尝试唤醒内核线程,但失败。

关于失败的原因现在无法说。 这可能是Java的死锁。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM