jstack分析定位死循环、线程阻塞、死锁等问题

本文介绍了使用jps、jstack、jconsole和jmap等工具进行Java应用程序的性能监控和内存状态跟踪。通过jps获取Java进程ID,jstack分析线程堆栈,jconsole提供GUI界面监控,jmap则用于导出堆内存快照。在遇到内存异常时,利用jmap或设置JVM参数可获取heap dump文件,以便于分析内存泄漏等问题。
摘要由CSDN通过智能技术生成

线程状态跟踪

(1) jps -l

jps命令,查询正在运行的虚拟机java进程,一般显示信息就是,pid和进程名称:

 或者输入tasklist,找到java.exe的PID,如下为4268:  

(2) jstack

使用jstack [pid] 输出当前进程的堆栈信息。主要有两种使用方式,如下:

将堆栈信息输出到执行文件 jstack [pid] > file,输出pid 4268的进程堆栈信息存储到test文件中,执行命令jstack 4268>E:\test。结果如下: 

(3)jconsole

(4)jmap 采集堆内存

jmap -dump:live,format=b,file=E:/dump201612271310.dat 14776

在jdk启动加参数中加: -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=D:\dump\ ,然后应用启动后出现内存异常则会自动导出dump文件,默认的文件名是:java_pid<进程号>.hprof。

注意:获取dump文件必须是一出现内存异常就获取dump文件,这样获取的文件信息才比较准确,如果过了一段时间在导出dump文件,就会因gc的缘故,导致信息不准确,所以推荐第二种方式获取dump文件。


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值