【发布时间】:2010-09-07 10:38:38
【问题描述】:
我在使用 JDK 1.5.0_08 的 Fedora Core 6 上运行的应用程序遇到问题。
经过一定的正常运行时间(通常是几天)后,线程开始卡在本机方法中。
线程被锁定在这样的地方:
"pool-2-thread-2571" prio=1 tid=0x08dd0b28 nid=0x319e waiting for monitor entry [0xb91fe000..0xb91ff7d4]
at java.lang.Class.getDeclaredConstructors0(Native Method)
或
"pool-2-thread-2547" prio=1 tid=0x75641620 nid=0x1745 waiting for monitor entry [0xbc7fe000..0xbc7ff554]
at sun.misc.Unsafe.defineClass(Native Method)
让我特别困惑的是这个:
"HealthMonitor-10" daemon prio=1 tid=0x0868d1c0 nid=0x2b72 waiting for monitor entry [0xbe5ff000..0xbe5ff4d4]
at java.lang.Thread.dumpThreads(Native Method)
at java.lang.Thread.getStackTrace(Thread.java:1383)
在 VM 重新启动之前,线程会一直卡住。
谁能告诉我这里发生了什么,什么可能导致本机方法阻塞? 每个卡住的线程顶部的监视器入口地址范围是不同的。我怎样才能知道是什么拿着这个显示器?
任何建议或意见将不胜感激!
谢谢, 大卫
【问题讨论】:
标签: java multithreading native-methods blocked