jstack
功能
查看运用程序jvm的堆栈情况,可以找出线程的运行情况,从而排查一些隐患或者服务卡顿的问题
具体说明
jstack用于打印出给定的java进程id或者core file或者远程调试服务的java堆栈信息,如果是在64位机器上,需要指定选项-J-d64
如果java程序崩溃会生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松知道java程序是如何崩溃和在程序何处发生问题。
option参数
-F 当jstack -l pid 没有响应的时候强制打印栈信息
-l 长队列,打印关于锁的附加信息
-m 打印java和native c/c++框架的所有栈信息
命令格式
jstack [option] pid
jstack [option] executable core
jstack [option] [server-id@]remote-hostname-or-IP
命令格式说明
executable core 产生core dump的java可执行文件
remote-hostname-or-IP 远程debug服务的主机名或ip
server-id 唯一id,假如一台主机上多个远程debug服务
使用实例
一般需要与top命令联用,使用top命令找出异常的进程(一般是cpu使用异常的进程)
通过top -Hp pid来定位该进程下各线程的cpu使用情况
再通过jstack pid命令打印该线程对应的堆栈情况