ThreadDump
来源:互联网 发布:菲律宾混血美女知乎 编辑:程序博客网 时间:2024/06/05 06:33
什么是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
Kill -3 <PID>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。IBM JVM 产生Thread Dump
在AIX上用IBM的JVM,内存溢出时默认地会产生javacore文件(关于cpu的)和heapdump文件(关于内存的)。 如果没有,则参照下列方法: 1. 在server启动前设置下面环境变量(可以加在启动脚本中) export IBM_HEAPDUMP=true export IBM_HEAP_DUMP=true export IBM_HEAPDUMP_OUTOFMEMORY=true export IBM_HEAPDUMPDIR=<directory path> 2. 用set命令检查参数设置,确保没有设置DISABLE_JAVADUMP,然后启动server 3. 执行kill -3 <PID>命令可以生成javacore文件和heapdump文件常见线程状态
IBM JVM常见线程状态
在IBM JVM产生的javacore或者Threaddump文件中 Idle线程:一个已经准备好接受请求的线程,但是没有和插件或者客户端建立连接 Keep-Alive线程:是一个已经准备好接受请求的线程,并且已经和插件或者客户端建立连接 正在接受请求的线程:是一个线程正在读取request的内容或者头部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放到另外的执行队列里去执行 。- ThreadDump
- 如何获得tomcat执行时的threaddump
- 用Java代码来触发生成ThreadDump
- kill -3 获取threaddump信息---转载
- ThreadDump分析笔记(一) 解读堆栈
- 从Sell线上线程数告警问题解决的过程谈ThreadDump分析的思路
- 是否应该把自己的积蓄投进创业?
- 1584-蜘蛛牌
- 对象比较问题(待续)
- 使用xmind绘制思维导向
- 配置域名路径
- ThreadDump
- 黑马程序员--第二阶段--图形用户界面--第22天(2)
- 第十周实验报告(3)
- C++著名程序库的总结
- 索引性能好不好让二元高度来说话
- 《UNIX网络编程》之旅-配置unp.h头文件环境
- Activity之间传递类对象
- struts2 一个form,多个submit 问题
- Referenced file contains errors(struts-2.0.dtd)