代码之家  ›  专栏  ›  技术社区  ›  Igal Serban

对部分挂起J2EE服务器的Java线程转储的帮助

  •  4
  • Igal Serban  · 技术社区  · 16 年前

    我们的j2ee服务器(由于尴尬的原因将保持不知名)会不时地急剧减速。我已经创建了一个线程转储。试着分析它。我不明白的一件事是有些人在等待锁时没有找到锁线程。下面是此类线程的堆栈跟踪的一部分:

    waiting for monitor entry []
    at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:781)
    - waiting to lock <0xsomenumber> (a org.apache.commons.pool.impl.GenericObjectPool)
    at org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:96)
    at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880)
    

    someNumber号正在等待。我没看到任何东西锁着它。怎么会这样?

    谢谢。

    更新一些更详细的信息: JDK版本是1.4.2.05

    1 回复  |  直到 16 年前
        1
  •  2
  •   Thorbjørn Ravn Andersen    16 年前

    使用jdk中的jconsole连接到应用程序服务器,并使用“线程”窗格中的“检测死锁”按钮。