这是Thread Dump
该线程状态 waiting for monitor entry 表示目前线程正在等待去锁住一个对象(其它线程可能正拥有该对象锁)。该现象会发生在当多线程同时去执行同步代码块或方法时。注意锁是对对象而言的,而不是单个的方法,也就是说当一个线程去执行某个对象的同步方法时,它须先锁住那个对象。

解决方案 »

  1.   

    不够,你要找出所有Thread栈信息,并且分类排序,比如:因为log4j等待Logger的而阻塞的有多少条线程,这种:
    java.lang.Thread.State: BLOCKED (on object monitor)
    at org.apache.log4j.Category.callAppenders(Category.java:204)
    - waiting to lock <0x00002aab2f555948> (a org.apache.log4j.spi.RootLogger)因为JDBC操作等待数据库返回的有多少条线程,这种:
    ava.lang.Thread.State: BLOCKED (on object monitor)
    at oracle.jdbc.driver.T4CMAREngine.unmarshalDALC(T4CMAREngine.java:2347)
    at oracle.jdbc.driver.T4C8TTIuds.unmarshal(T4C8TTIuds.java:134)
    at oracle.jdbc.driver.T4CTTIdcb.receiveCommon(T4CTTIdcb.java:155)然后根据数量规模排序,来判断瓶颈可能发生的位置。
      

  2.   

    不好意思没有来得及回复,
    发现好多是parking to wait for  <0x00002aaad3d8a1a0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) 
    查询一些解决办法是 调整jvm的-Xms参数。
      

  3.   

    http://www.cnblogs.com/softidea/p/4242528.html