JDK 1.5.0_08이 적용된 Fedora Core 6에서 실행되는 응용 프로그램에 문제가 있습니다.여러 스레드가 네이티브 호출에 걸림 (Java)
가동 시간 중 일부 (보통 며칠간)가 원시 메소드에서 멈추기 시작한 후에.
스레드
는 다음과 같이 뭔가에 고정되어 VM의 때까지 갇혀 남아"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)
스레드 :
"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)
특히 나에게 수수께끼
이 하나입니다 다시 시작됩니다.아무도 내게 무슨 일이 일어나고 있는지, 네이티브 메소드가 차단할 수있는 원인을 알려 줄 수 있습니까? 각 고정 스레드의 맨 위에있는 모니터 항목 주소 범위가 다릅니다. 이 모니터를 보유하고있는 것이 무엇인지 어떻게 알 수 있습니까?
모든 제안이나 조언을 부탁드립니다!
덕분에, 데이비드
...이 스레드 여기에 모든 시간을 갇히지, 그러나 희망 여기에 정보가 가능한 원인이 배제 적어도 다른 사람을 도움이됩니다의 근본 원인이 될 것입니다 말할 수 없습니다 I 않는 한 나중에 문제가 해결 된 JDK 버전의 버그로 인해 문제가 있음을 입증 할 수 있습니다. JDK 업그레이드는 옵션이 아닙니다. 내일 소스 코드를 살펴 보도록하겠습니다. 문제에 대한 통찰력을 얻을 수 있기를 바랍니다. JDK 네이티브 스택 트레이스를 보여주고 거기에 아무것도 볼 수없는 "혼합 네이티브/자바"쓰레드 덤프를 생각해 보았지만 ... 저는 리눅스에서 실행 중이므로 링크 된 버그는 관련성이 있습니다. –