Fedora Core 6 と JDK 1.5.0_08 で実行されているアプリケーションに問題があります。
ある程度の稼働時間 (通常は数日) の後、スレッドはネイティブ メソッドでスタックし始めます。
スレッドは次のようにロックされています。
"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 が再起動されるまで、スレッドは停止したままになります。
ここで何が起こっているのか、何がネイティブメソッドをブロックさせているのか、誰か教えてもらえますか? 各スタック スレッドの上部にあるモニター エントリ アドレス範囲は異なります。このモニターを保持しているものを特定するにはどうすればよいですか?
提案やアドバイスをいただければ幸いです。
ありがとう、デビッド