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

标签 java debugging jakarta-ee stack-trace

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

最佳答案

使用 JDK 中的 JConsole 连接到您的应用程序服务器,并使用“线程” Pane 上的“检测死锁”按钮。

关于java - 帮助处理部分挂起的 j2ee 服务器的 Java 线程转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2632631/

相关文章:

java - 将 GuiceServletContextListener 连接到现有的注入(inject)器

c - 如何在 Xcode 调试器中查看位图(C 语言)?

java - 强制或生成jvm核心转储(IBM JVM)

java - 在Java中计算CRC8-Maxim校验和

java - 在 JSTL 中将小数解析为整数

java - 安卓错误: application has stopped unexpectedly please try again

debugging - 你找了很久都找不到的最愚蠢的 bug 是什么?

android - 如何在 Memu/Bluestacks/Nox App Player 等模拟器上使用 adb

Java/Java EE - 在单一环境中部署来自不同供应商的应用程序服务器

mysql - 指令删除的 hibernate 问题