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

我们的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)

一些号码只等待.我没有看到任何锁定它.怎么可能?

谢谢.

更新更详细:jdk版本是1.4.2.05

最佳答案 使用JDK中的JConsole连接到应用程序服务器,并使用“线程”窗格中的“检测死锁”按钮.

点赞