У меня проблема с приложением, работающим на 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)
Потоки остаются заблокированными до перезагрузки виртуальной машины.
Может кто-нибудь дать мне представление о том, что здесь происходит, что может вызывать блокировку нативных методов?
Диапазон адресов входа монитора в верхней части каждого зависшего потока различен. Как я могу выяснить, что держит этот монитор?
Любые предложения или советы будут с благодарностью!
Спасибо,
Дэвид