我在使用 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 重新启动之前,线程会一直卡住。
谁能给我一个关于这里发生了什么的想法,什么可能导致本机方法阻塞?每个卡住的线程顶部的监视器入口地址范围是不同的。我怎样才能弄清楚这个显示器是什么?
任何建议或意见将不胜感激!
谢谢,大卫