JVM基础故障处理工具总结

JVM基础故障处理工具

1. jps:虚拟机进程状况工具

jps 工具的功能是列出正在运行的虚拟机进程,并显示虚拟机执行主类的名称以及这些进程的本地虚拟机唯一 ID。

jps 命令格式如下:

$jps [option] [hostid]
image-20220125153118750

2. jstat:虚拟机统计信息监视工具

jstat 是用于监视虚拟机各种运行状态的命令行工具,可以显示虚拟机进程中类加载、内存、垃圾收集、即时编译等运行时数据。

jstat 命令格式如下:

$jstat [ option vmid [interval[s|ms] [count] ] ]

参数intervalcount代表查询间隔和次数,如果忽略这两个参数说明只查询一次。

选项option代表用户希望查询的虚拟机信息,主要分为三类:类加载、垃圾收集、运行期编译状况。

image-20220125153803409

下面给出一个例子:
image-20220125153839802

查询结果表明:

  • 新生代 Eden 区使用了 6.2% 的空间
  • 两个 Survivor 区都是空的
  • 老年代 O 使用了 41.42% 的空间
  • 永久代 P 使用了 47.20% 的空间
  • 程序运行以来发生 Young GC 16 次,共耗时 0.105s
  • 发生 Full GC 3 次,共耗时 0.472s
  • 所有 GC 总耗时 0.577s

3. jinfo:Java配置信息工具

jinfo 的作用是实时查看和调整虚拟机各项参数。

jinfo 命令格式如下:

$jinfo [option] pid

下面是一个执行样例:

image-20220125154603272

4. jmap:Java内存映像工具

jmap 命令用于生成堆转储快照。还可以查询 finalize 执行队列、Java 堆和方法区的详细信息,如空间使用率,当前使用的收集器版本等等。

另外,通过虚拟机的XX: +HeapDumpOnOutOfMemoryError参数,可以让虚拟机在内存溢出之后自动生成堆转储快照。

jmap 命令格式如下:

$jmap [option] vmid
image-20220125154827703

下面是一个使用样例:

image-20220125154851542

5. jhat:虚拟机堆转储快照分析工具

jhat 与 jmap 工具搭配使用,用于分析 jmap 产生的堆转储快照。。

jhat 内置了一个微型地 HTTP 服务器,可以在浏览器中查看堆转储快照的分析结果。

但由于性能较差、功能较为简陋,往往使用 VisualVM 代替这个工具。

6. jstack:Java堆栈跟踪工具

jstack 引用书工程虚拟机当前的线程快照。线程快照是虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的目的通常是定位线程出现长时间停顿的原因,如死锁、死循环等。

jstack 命令格式如下:

$jstack [option] vmid
image-20220125203343358

下面是一个使用样例:

image-20220125203416844

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

posted @ 2022-01-25 20:37  pedro7  阅读(211)  评论(0编辑  收藏  举报