Thread Dump与Analyzer

线程转储文件中有什么呢?

包含每一个线程的状态及调用堆栈信息。

1.thread dump 

jstack pid 

可以输出堆栈信息到控制台,可用重定向命令写入到文件中。

2.分析

结果为普通文本,可以直接阅读。形如:

2016-11-04 23:53:16
Full thread dump OpenJDK 64-Bit Server VM (24.95-b01 mixed mode):

"JDWP Transport Listener: dt_socket" daemon prio=10 tid=0x00007f1b280af000 nid=0x10e4 runnable [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"Attach Listener" daemon prio=10 tid=0x00007f1b20e59800 nid=0x5c2 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"ajp-nio-8009-exec-10" daemon prio=10 tid=0x00007f1b20e58000 nid=0x6fef waiting on condition [0x00007f1b0eae9000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000000df72b840> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
	at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
	at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:103)
	at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:31)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Thread.java:745)

3.线程状态

大致有RUNNABLE,WAITING ,TIMED_WAITING,BLOCKED这四种状态。

看到很多TIMED_WAITING不要担心,我们若用了java.util.concurrent.ThreadPoolExecutor 这个线程池,那么空闲的线程显示的就是TIMED_WAITING状态。因为它内部是BlockingQueue来盛放任务,若为空,get()的时候自然会阻塞。

时间: 2024-10-30 20:48:42

Thread Dump与Analyzer的相关文章

如何抓取Thread Dump小结(转)

当系统性能出现问题时,需要从各个方面来查看网络环境.主机资源.查看最经变更的代码等.如果是想从代码层面解决问题,那么最有效的方法就是查看相关dump文件.如果是使用IBM JDK(我默认你是在aix环境下),那么可以使用kill -3 "进程号",这种恐吓的方式来生成dump文件.可以用IBM提供的工具jca.jar来查看Thread dump文件.利用IBM 提供的heap分析工具.javacore文件(关于cpu的)和heapdump文件(关于内存的) tips:IBM jdk1.

Thread Dump 和Java应用诊断(转)

  Thread Dump 和Java应用诊断 Thread Dump是非常有用的诊断Java应用问题的工具,每一个Java虚拟机都有及时生成显示所有线程在某一点状态的thread-dump的能力.虽然各个Java虚拟机thread dump打印输出格式上略微有一些不同,但是Thread dumps出来的信息包含线程:线程的运行状态.标识和调用的堆栈:调用的堆栈包含完整的类名,所执行的方法,如果可能的话还有源代码的行数. Thread Dump特点: ?能在各种操作系统下使用 ?能在各种Java

三个实例演示 Java Thread Dump 日志分析

原文地址: http://www.cnblogs.com/zhengyun_ustc/archive/2013/01/06/dumpanalysis.html jstack Dump 日志文件中的线程状态 dump 文件里,值得关注的线程状态有: 死锁,Deadlock(重点关注)  执行中,Runnable    等待资源,Waiting on condition(重点关注)  等待获取监视器,Waiting on monitor entry(重点关注) 暂停,Suspended 对象等待中,

Heap Dump与Analyzer

堆转储文件中有什么呢? 每一个类有多少个对象,它们的值是什么,都可以在堆转储文件中找到. 1.heap dump 除了使用visual VM 外,还可以使用jmap命令.特别是远程机器不给你开放端口连时,只能使用原始的命令行工具. //将pid=9406这个java进程的堆,dump到heapDump.hprof文件中.live表示只输出存活对象的信息 jmap -dump:live,format=b,file=heapDump.hprof 9406 这只二进制格式的文件,无法直接阅读.后缀hp

JVM TI学习(1) 如何中断weblogic中stuck thread

JPDA(Java Platform Debugger Architecture)是sun推出的一套工具接口,有了这些接口,debugger.profile工具可以attach到target JVM,进而可以监控.调试我们的程序.JPDA包括三部分:JVM TI, JDI, JDWP.TI可以使用native语言,通过调用jvmti.c提供的系列库函数,实现debug工作,而JDI是TI面向Java开发人员提供的高层开发接口.TI代替了早期的DI,每个版本都做了一定的功能增强.随着JDK的发展,

急求。。。。。看下java的dump文件,会这样

问题描述 急求.....看下java的dump文件,会这样 2015-03-18 22:38:54 Full thread dump Java HotSpot(TM) Client VM (20.1-b02 mixed mode, sharing): "Attach Listener" daemon prio=10 tid=0x089f1c00 nid=0x1df1 waiting on condition [0x00000000] java.lang.Thread.State: RU

jstack和线程dump分析

jstack和线程dump分析 jstack定义: jstack是java虚拟机自带的一种堆栈跟踪工具. 基本介绍: jstack用于生成java虚拟机当前时刻的线程快照.线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁.死循环.请求外部资源导致的长时间等待等. 线程出现停顿的时候通过jstack来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做什么事情,或者等待什么资源. 命令格式: jstack

Java Thread 那些事

        这篇文章被压在草稿箱许久,最近公司内部的技术社区有同学贴出了几篇分享Java线程的文章,发觉有很多的地方可以深挖,所以花点时间继续撰写,便有了这篇博文.本文只聚焦JVM层面的线程模型,不考虑和真实的操作系统Thread模型挂钩(由于篇幅有限,本文不会介绍Thread dump结构,也不会介绍调优过程中对工具的综合使用,如ps,perf.top,iostat,jstack,TDA plugin,Thread inspector.如果有问题,欢迎大家留言交流).后面会考虑对xUnix

Java中抓取 Thread Dumps 的方式汇总_java

Thread dumps(线程转储)能帮助我们判断 CPU 峰值.死锁.内存异常.应用反应迟钝.响应时间变长和其他系统问题.一些在线的分析工具比如 http://fastthread.io/ 也能帮助我们分析和定位问题,但是这些工具都要求有一个 dump 文件.因此在这篇文章当中,我总结了7中抓取 Java Thread Dumps 文件的方式. 1. jstack jstack 是一个抓取 thread dump 文件的有效的命令行工具,它位于 JDK 目录里的 bin 文件夹下(JDK_HO