JVM基础故障处理工具总结 jps 工具的功能是列出正在运行的虚拟机进程,并显示虚拟机执行主类的名称以及这些进程的本地虚拟机唯一 ID。
jps 命令格式如下:
$jps [option] [hostid]
jstat 是用于监视虚拟机各种运行状态的命令行工具,可以显示虚拟机进程中类加载、内存、垃圾收集、即时编译等运行时数据。
jstat 命令格式如下:
$jstat [ option vmid [interval[s|ms] [count] ] ]参数interval和count代表查询间隔和次数,如果忽略这两个参数说明只查询一次。
选项option代表用户希望查询的虚拟机信息,主要分为三类:类加载、垃圾收集、运行期编译状况。

下面给出一个例子:
查询结果表明:
jinfo 的作用是实时查看和调整虚拟机各项参数。
jinfo 命令格式如下:
$jinfo [option] pid下面是一个执行样例:

jmap 命令用于生成堆转储快照。还可以查询 finalize 执行队列、Java 堆和方法区的详细信息,如空间使用率,当前使用的收集器版本等等。
另外,通过虚拟机的XX: +HeapDumpOnOutOfMemoryError参数,可以让虚拟机在内存溢出之后自动生成堆转储快照。
jmap 命令格式如下:
$jmap [option] vmid
下面是一个使用样例:

jhat 与 jmap 工具搭配使用,用于分析 jmap 产生的堆转储快照。。
jhat 内置了一个微型地 HTTP 服务器,可以在浏览器中查看堆转储快照的分析结果。
但由于性能较差、功能较为简陋,往往使用 VisualVM 代替这个工具。
jstack 引用书工程虚拟机当前的线程快照。线程快照是虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的目的通常是定位线程出现长时间停顿的原因,如死锁、死循环等。
jstack 命令格式如下:
$jstack [option] vmid
下面是一个使用样例:

JDK5 开始,Thread类新增了一个getAllStackTraces()方法,可以获取虚拟机中所有线程的StackTraceElement对象,可以通过简单的几行代码完成 jstack 的大部分功能。