내 회사에서 작업중인 응용 프로그램의 성능이 향상되었다고 이야기했습니다. 이 응용 프로그램은 XML 파싱을 많이하는 예약 된 작업을 포함합니다. 특정 시간에 이러한 작업이 많이 발생하면 응용 프로그램이 느려지 게됩니다. 스레드 최고점에서 수집 한 스레드 덤프를보고 무엇을 볼 수 있습니까? 문제는 .. 그런 종류의 운동에 익숙하지 않아서 나는 그 중 많은 부분을 이해할 수 없었다. 아래는 쓰레기 더미에서 발췌 한 것입니다.모니터에서 대기중인 스레드
"JMSThread(5)-7635" daemon prio=10 tid=0x000000004fb5b800 nid=0x71e in Object.wait() [0x0000000048de8000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00002aaabf41fe38> (a java.lang.Object)
at EDU.oswego.cs.dl.util.concurrent.BoundedLinkedQueue.poll(BoundedLinkedQueue.java:253)
- locked <0x00002aaabf41fe38> (a java.lang.Object)
at EDU.oswego.cs.dl.util.concurrent.PooledExecutor.getTask(PooledExecutor.java:723)
at org.jboss.util.threadpool.MinPooledExecutor.getTask(MinPooledExecutor.java:106)
at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:747)
at java.lang.Thread.run(Thread.java:619)
Locked ownable synchronizers:
- None
JMSThread(5)-7634" daemon prio=10 tid=0x000000004ed5c800 nid=0x716 in Object.wait() [0x0000000044eb2000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00002aaabf41fe38> (a java.lang.Object)
at EDU.oswego.cs.dl.util.concurrent.BoundedLinkedQueue.poll(BoundedLinkedQueue.java:253)
- locked <0x00002aaabf41fe38> (a java.lang.Object)
at EDU.oswego.cs.dl.util.concurrent.PooledExecutor.getTask(PooledExecutor.java:723)
at org.jboss.util.threadpool.MinPooledExecutor.getTask(MinPooledExecutor.java:106)
at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:747)
at java.lang.Thread.run(Thread.java:619)
Locked ownable synchronizers:
- None
동일한 개체에 대해 잠금 및 대기중인 항목이 여러 개 있습니다. 아무도 그들이 무슨 뜻인지 이해할 수 있습니까? 이것은 어떤 문제를 나타 냅니까 ??
이 스레드는 JMS 대기열에서 수신 대기하는 MDB 인스턴스입니까? (예, 내 응용 프로그램이 비동기 처리를 위해 JMS 대기열에 요청을 넣음) – wantobegeek