基本命令的使用
1 | 获取垃圾回收器的类型和系统参数 // jmap -heap pid |
jstack
jstack是jdk自带的线程堆栈分析工具,使用该命令可以查看或导出 Java 应用程序中线程堆栈信息。
- 功能
jstack用于生成java虚拟机当前时刻的线程快照。线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等。 线程出现停顿的时候通过jstack来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做什么事情,或者等待什么资源。 如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在程序何处发生问题。另外,jstack工具还可以附属到正在运行的java序中,看到当时运行的java程序的java stack和native stack的信息, 如果现在运行的java程序呈现hung的状态,jstack是非常有用的。 - 线程的状态
NEW,未启动的。不会出现在Dump中。
RUNNABLE,在虚拟机内执行的。
BLOCKED,受阻塞并等待监视器锁。
WATING,无限期等待另一个线程执行特定操作。
TIMED_WATING,有时限的等待另一个线程的特定操作。
TERMINATED,已退出的。 - 命令
jstack -l pid
获取pid:ps -ef | grep “name” | grep -v grep | awk ‘{print $2}’
pid转16进制:echo ‘ibase=10;ibase=16;pid’|bc
jmap
jmap heap pid:查看 JDK的概况的最好的一个参数
Jmap是一个可以输出所有内存中对象的工具,甚至可以将VM 中的heap,以二进制输出成文本.
jmap -dump:format=b,file=outfile PID 可以将指定进程的内存heap输出出来到outfile文件里.
命令格式
jmap [ option ] pid
jmap [ option ] executable core
jmap [ option ] [server-id@]remote-hostname-or-IP
参数说明
options:
executable :产生core dump的java可执行程序;
core 将被打印信息的core dump文件;
remote-hostname-or-IP 远程debug服务的主机名或ip;
server-id 唯一id,假如一台主机上多个远程debug服务;dump 文件分析
导出整个JVM 中内存信息: jmap -dump:format=b,file=文件名.dump [pid]- 将文件远程复制
- 将本地文件复制到远程: scp {local txt} {userName}@{ip}:/{txt}
- 将远程文件复制到本地: scp {usreName}@{ip}:/root/{txt}