首页 > 代码库 > jstack简介

jstack简介

jstack:Java进程中线程的堆栈信息跟踪工具

功能简介

jstack常用来打印Java进程/core文件/远程调试端口的Java线程堆栈跟踪信息,包含当前虚拟机中所有线程正在执行的方法堆栈信息的集合。

主要用来定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待。

命令格式

1 jstack [ options ] pid                                      //Java进程
2 jstack [ options ] executable core                          //core文件
3 jstack [ options ] [ server-id@ ] remote-hostname-or-IP     //远程调试端口

其中options选项可有

选项 作用
-F 当正常输出的请求不被响应时,强制输出线程堆栈
-l 除了堆栈外,显示关于锁的附加信息
-m 如果调用到本地方法的话,可以显示C/C++的堆栈信息

 

 

 

 

其他说明

1、When the specified process is running on a 64-bit Java Virtual Machine, you might need to specify the -J-d64 option, for example: jstack -J-d64 -m pid.

2、In mixed mode stack trace, the -m option does not work with the remote debug server.

3、In Windows Systems where the dbgeng.dll file is not present, Debugging Tools For Windows must be installed so these tools work.

样例

java线程的获得:使用jps -l,或者使用top命令查看使用cpu/memory最多的进程id,或者ps -aux | grep java

进程id的获得:top -Hp pid,找到改线程下的最繁忙的进程id(十进制要转换成16进制:printf "%x\n" tid)

jstack -l pid | grep tid

jstack简介