当java程序发生死锁时,可以使用jstack进行查看:
1. windows下,进入cmd窗口,然后进入jdk的bin目录下:
cd C:\Program Files\Java\jdk1.7.0_67\bin
2.执行jps命令:
jps
3.执行jstack命令:
jstack -l 8372 // 8372就是发生死锁的线程id
可以看出,发生死锁的两个地方分别是:
package2.deadLock.DeadThread.run(DeadThread.java:37)
package2.deadLock.DeadThread.run(DeadThread.java:24)
相关推荐
为了检测死锁,Java提供了一个内置的诊断工具——`jstack`,它可以帮助开发者查看线程堆栈信息,找出可能存在的死锁状态。通过分析`jstack`输出,我们可以找到那些处于"等待持有锁"状态的线程,如果发现有循环等待的...
《实战Java虚拟机——JVM故障诊断与性能优化》是一本深入探讨Java开发中的关键环节——Java虚拟机(JVM)的专著。本书聚焦于实际应用中的问题解决和性能调优,对于Java开发者和系统管理员来说,是提升技术水平的重要...
本文将深入探讨如何使用Java提供的工具——`jps`和`jstack`,以及如何通过Shell脚本来定时收集Java进程的线程信息。 首先,`jps`(JVM Process Status)是Java虚拟机进程状况工具,它能够列出正在运行的Java进程ID...
JVM提供了一个强大的工具——`jstack`,用于生成线程堆栈转储,即Thread Dump,帮助开发者洞察线程的运行状态,识别性能瓶颈或死锁等问题。本文将详细探讨Thread Dump中的线程状态,以及如何分析和解决相关问题。 1...
本文介绍了两种常见的JVM性能调优监控工具——`jps`和`jstack`的基本使用方法及实际应用场景。这些工具可以帮助开发者快速定位问题所在,提高系统的稳定性和响应速度。此外,对于更复杂的性能问题,还可以结合其他...
- **线程dump**:jstack命令获取线程状态,排查死锁、阻塞等问题。 - **日志分析**:JVM会生成各种日志,如gc.log,用于分析垃圾收集行为。 6. **性能瓶颈识别** - **CPU耗时分析**:找出消耗CPU最多的代码段。 ...
2. **同步机制**:讲述了Java中同步的基石——synchronized关键字,以及其背后的锁机制。此外,还包括wait()、notify()和notifyAll()方法的使用,以及死锁、活锁和饥饿现象的避免。 3. **并发工具类**:介绍了许多...
2. **死锁检测**:自动检测并标记可能存在的死锁,提供详细的死锁链路信息。 3. **线程耗时分析**:统计各线程执行时间,找出消耗CPU最多的线程。 4. **锁竞争分析**:分析线程对锁的争用情况,识别潜在的性能瓶颈...
- `jstack`用于查看线程堆栈信息,有助于排查死锁和线程阻塞问题。 - `jinfo`显示和修改Java进程的配置信息。 - `jps`列出运行中的Java虚拟机实例。 - `jcmd`提供了一种命令行方式来管理Java应用,如触发垃圾...
5. **jstack**:查看线程堆栈信息,有助于发现死锁等问题。 6. **jcmd**:多功能命令行工具,可用于控制和诊断JVM。 通过合理使用这些工具,可以有效地监测JVM的运行状况,帮助开发者优化应用程序性能。
2. **死锁检测**:通过分析线程间的锁定资源,发现可能存在的死锁问题。 3. **线程堆栈分析**:提供详细的线程堆栈信息,揭示代码执行路径。 4. **等待/锁定资源分析**:揭示哪些线程正在等待其他资源,或持有哪些...
10. `jstack`:用于打印Java线程堆栈跟踪信息,帮助定位线程死锁等问题。 JDK 8u201是一个维护更新,它通常会修复之前版本中发现的安全漏洞,优化性能,并可能包含一些小的增强功能。对于开发者来说,保持JDK版本的...
在 Java 中打印当前线程的方法栈,可以用 kill -3 命令向 JVM 发送一个 OS 信号,JVM 捕捉以后会自动 dump 出来;当然,也可以直接使用 jstack 工具完成,这些方法好几年前我在这篇性能分析的文章 中介绍过。这样的...