java-每隔几分钟,应用程序就会挂在futex_wait_queue_me()上

提问

我在Ubuntu 11.10机器上的Groovy中运行一个简单的脚本,该脚本采用键/值对并将它们添加到循环中的JDBM映射中.每隔约3分钟,脚本将挂起几分钟,然后恢复运行.当我查看资源监视器时,我看到没有CPU或内存活动,并且该进程在futex_wait_queue_me()中.
请提出在Windows机器上以无挂起方式运行应用程序的方式来解决此问题的方法.
这可能是操作系统问题吗? (在Ubuntu0中发现了许多有关类似futex_wait_queue_me()问题的类似线程.
谢谢

最佳答案

请检查内核的版本.我在Centos6上遇到了类似的问题(Java和其他多线程应用程序),并将内核升级到版本2.6.32-504.16.2.el6.x86_64解决了该问题.

请参阅centos错误报告:https://bugs.centos.org/view.php?id=8703,其中包含以下指向问题解释的指针:
https://github.com/torvalds/linux/commit/76835b0ebf8a7fe85beb03c75121419a7dec52f0 [^]

我的堆栈跟踪是:

cat /proc/23199/stack
[<ffffffff810b226a>] futex_wait_queue_me+0xba/0xf0
[<ffffffff810b33a0>] futex_wait+0x1c0/0x310
[<ffffffff810b4c91>] do_futex+0x121/0xae0
[<ffffffff810b56cb>] sys_futex+0x7b/0x170
[<ffffffff8100b072>] system_call_fastpath+0x16/0x1b
[<ffffffffffffffff>] 0xffffffffffffffff