什么是Thread Dump?
Thread Dump是非常有用的诊断Java应用问题的工具,每一个Java虚拟机都有及时生成显示所有线程在某一点状态的thread-dump的能力。虽然各个 Java虚拟机thread dump打印输出格式上略微有一些不同,但是Thread dumps出来的信息包含线程;线程的运行状态、标识和调用的堆栈;调用的堆栈包含完整的类名,所执行的方法,如果可能的话还有源代码的行数。
Thread Dump特点
1. 能在各种操作系统下使用
2. 能在各种Java应用服务器下使用
3. 可以在生产环境下使用而不影响系统的性能
4. 可以将问题直接定位到应用程序的代码行上
编辑本段Thread Dump能诊断的问题
1. 查找内存泄露,常见的是程序里load大量的数据到缓存 2. 发现死锁线程
SUN JVM 产生ThreadDump
1. Solaris OS
<ctrl>-’\’ (Control-Backslash) kill -QUIT <PID>
2. HP-UX/UNIX/Linux
1. ps -aef|grep java //找到你要的线程id
2.Kill -3 <PID> //线程id这里就可以用了
3.more /$tomcat/ catalina.out
Full thread dump Java HotSpot(TM) Server VM (1.5.0_05-b05 mixed mode):
"TP-Monitor" daemon prio=1 tid=0x6ce4f808 nid=0x183f in Object.wait() [0x69af6000..0x69af70b0]
at java.lang.Object.wait(Native Method)
- waiting on <0x70823250> (a org.apache.tomcat.util.threads.ThreadPool$MonitorRunnable)
at org.apache.tomcat.util.threads.ThreadPool$MonitorRunnable.run(ThreadPool.java:559)
- locked <0x70823250> (a org.apache.tomcat.util.threads.ThreadPool$MonitorRunnable)
at java.lang.Thread.run(Thread.java:595)
。。。。。。
4.ps -efHl | grep 'java' **. **
3.Window
直接对MSDOS窗口的程序按Ctrl-break 有些Java应用服务器是在控制台上运行,如Weblogic,为了方便获取threaddump信息,在weblogic启动的时候,会将其标准输出重定向到一个文件,用"nohup ./startWebLogic .sh > log.out &"命令,执行"kill -3 <pid>",Thread dump就会输出到log.out里。Tomcat的Thread Dump会输出到命令行控制台或者logs的catalina.out文件里。为了反映线程状态的动态变化,需要接连做三次以上thread dump,每次间隔10-20s。
常见线程状态
Sun JVM的常见线程状态
对于thread dump信息,主要关注的是线程的状态和其执行堆栈
线程的状态一般为三类
Runnable(R):当前可以运行的线程
Waiting on monitor(CW):线程主动wait
Waiting for monitor entry(MW):线程等锁
一般关注的都是第一和第三种状态的线程
Cpu很忙则关注runnable的线程
Cpu闲则关注waiting for monitor entry的线程
一种典型的死锁是由于在server端应用(比如servlet)中请求由同一weblogic实例server的资源,解决办法就是将该servlet放到另外的执行队列里去执行 。
分享到:
相关推荐
Java Thread Dump 分析是 Java 应用程序性能优化的重要工具之一。Thread Dump 是 JVM 的一个快照,记录了当前所有线程的状态,包括线程的 ID、名称、状态、锁信息等。通过分析 Thread Dump,可以找到导致 CPU 高的...
java线程分析工具
Java Thread Dump Analyzing
java 线程Dump 分析工具: Java的TDA线程转储分析器是一个用于分析Sun Java VM生成的线程转储和堆信息的小型Swing GUI(目前用1.4测试)。它从提供的日志文件中解析线程转储和类直方图。它提供关于发现的线程转储的...
IBM最新java threaddump 分析工具 java -jar jca.jar -Xmx1024m jca.jar
包括 堆内存dump分析工具和thread dump(java core)的分析工具 还包括两篇关于dump分析的文档,分析java系统内存泄露死循环等非常需要啊有木有
这个文件最重要的作用就是分析 Java 堆内存泄露问题,heap analyzer,MAT 等工具都可以分析这种文件。 Java core 文件保存的是 java 应用程序在崩溃时或任一时刻关于 Java 运行环境的各种信息。包括 Java 虚拟机的...
java Thread Dump 其实就是stack trace。 我们平时经常会碰见java异常,并且得到异常的方法用e.printstacktrace 实际上程序正常运行时也是会有stack trace的,只不过平时不显示出来而已。如何能正常及时显示堆栈信息...
java dump 堆栈 dumpAnalyzer 分析,在日常工作中,经常会遇到,系统跑着跑着就会出现性能问题,CPU居高不下。这个时候我们就需要对系统的堆栈信息进行分析。这里就介绍如何使用IBM内存检测工具(dumpAnalyzer)。
thread and mointor dump analyzer,java线程文件分析工具
用Java thread dump 去分析程序的问题,英文版的word文档,对于分析定位程序问题。
主要介绍了使用dotnet-dump 查找 .net core 3.0 占用CPU 100%的原因,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
分析线程情况 JavaCore 或 ThreadDump文件,即线程的映像,用来分析线程资源锁等情况
性能测试,线程的 dump 看到线程的 死锁,等待 运行状态
IBM Thread and Monitor Dump Analyzer for Java(简称 jca)。它可以识别Java线程中的挂起,死锁,资源竞争,和瓶颈。 使用方法: java -Xmx1000m -jar jca456.jar
java堆栈信息dump文件
javacore 文件的分析可以帮助我们解决一些问题,如:100% CPU Usage、Crash、Hang/Performance 问题。我们可以通过 javacore 文件来判断一些故障,例如:某一个线程执行时间太长,导致系统崩溃。 在 WebSphere ...
IBM 线程堆栈分析工具,IBM Thread and Monitor Dump Analyzer for java
Thread and Monitor Dump Analyzer for Java