JVM 监控和诊断概述 jps、jstak、jstack、jinfo、jmap

发布于 2024-04-21 06:20:28 字数 2532 浏览 31 评论 0

程序运行中经常会遇到各种问题,定位问题时通常需要综合各种信息,如系统日志、堆 dump 文件、线程 dump 文件、GC 日志等。通过虚拟机监控和诊断工具可以帮忙我们快速获取、分析需要的数据,进而提高问题解决速度。可以使用图形化工具如:jconsole、jvisualvm,或者命令进行监控和诊断命令。

本文将介绍虚拟机常用监控和问题诊断命令工具的使用方法,主要包含以下工具:

jps		显示系统中所有 Hotspot 虚拟机进程
jstat	收集 Hotspot 虚拟机各方面运行数据
jstack	显示虚拟机的线程栈信息
jinfo	显示虚拟机的配置信息
jmap	用于生成虚拟机的内存快照信息

命令介绍

1).jps 命令

JVM Process Status Tool,该命令用于列出正在运行的虚拟机进程,显示 main 类的名称和虚拟机进程 id。该命令受当前用户的访问权限影响,比如 linux 下非 root 用户只列出当前用户启动的虚拟机进程。

命令格式:

jps  [options]  [hostid]

常用参数: 
 -l	输出主类全名
 -v	输出虚拟机进程启动的 jvm 参数
 -m	输出启动时传递给 main 函数的参数

2).jstack 命令

Stack Trace for Java,用于生成虚拟机当前的线程快照信息,包含每一条线程的堆栈信息。该命令通常用于定位线程停顿原因,当出现线程停顿时,可通过 stack 查看每个线程的堆栈信息,进而分析停顿原因。

命令格式: jstack [ option ] pid

常用参数: 
 -l	除堆栈外,显示锁的附加信息
 -F	当请求不被响应时,强制输出线程堆栈
 -m	混合模式,打印 java 和本地 C++调用的堆栈信息

3) jstat 命令

JVM Statistics Monitoring Tool,用于监控各种运行状态信息的命令。在只有文本控制台的环境中(如企业中的生产环境),该工具非常有用。 可以用来显示系统中类装载、垃圾回收、运行期编译状况等运行数据。

命令格式: jstat [ generalOption | outputOptions vmid [interval[s|ms] [count]] ]

  • vmid 表示虚拟机唯一标识符,如果是本地虚拟机进程,与 LVMID 一致,通常为本地虚拟机进程号。
  • interval 表示查询间隔时间,count 表示查询次数。如果省略 interval 和 count 参数,表示查询一次。
常用参数: 
class		类装载相关信息.
compiler	JIT 编译器编译过的方法、耗时等.
gc			java 堆信息和垃圾回收状况.
gccapacity	关注 java 堆各个区的最大和最小空间.
gccause		类似 gcutil,额外输出导致上一次 gc 的原因.
gcnew		新生代 gc 状况.
gcnewcapacity	关注新生代 gc 使用的最大和最小空间.
gcold		老年代 gc 状况.
gcoldcapacity	关注老年代 gc 使用的最大和最小空间.
gcpermcapacity	关注持久代 gc 使用的最大和最小空间.
gcutil		关注已使用空间占总空间比例.
printcompilation	输出已经被 JIT 编译的方法.

4) jinfo 命令

Configuration Info for Java,用于查看和修改虚拟机的各项参数信息。

命令格式:

jinfo [ option ] pid 
常用参数: 
 -flag name	打印虚拟机该参数对应的值.
 -flag [+\-]name	使该参数生效或失效.
 -flag name=value	修改相应参数的值.
 -flags	打印传给 jvm 的参数值.
 -sysprops	打印 System.getProperties() 信息.

5) jmap 命令

Memory Map for Java,可以产生堆 dump 文件,查询堆和持久代的详细信息等。

命令格式:

jmap [ option ] pid 
常用参数:
 -dump	生成堆 dump 文件,格式为: -dump:[live,]format=b,file=<filename>
 -heap	显示 java 堆的详细信息,包括垃圾回收期、堆配置和分代信息等
 -histo	显示堆中对象的统计信息,包括类名称,对应的实例数量和总容量
 -permstat	统计持久代中各 ClassLoader 的统计信息。

6) jhatk 命令

Jvm Heap Analysis Tool, 与 jmap 一起使用

jhat dump.tmp  
Reading from dump.tmp...  
Dump file created Tue Jun 28 13:55:09 CST 2016

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

十级心震

暂无简介

文章
评论
26 人气
更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文