JVM 常用命令行工具 4年前

代码工具
9933
JVM 常用命令行工具

基础故障处理工具

Java 开发人员肯定都知道 JDK 的 bin 目录下有许多小工具,这些小工具除了用于编译和运行 Java 程序外,打包、部署、签名、调试、监控、运维等各种场景都可能会见到它们的影子

本文主要介绍的是用于监视虚拟机运行状态和进行故障处理的工具,根据软件可用性和授权的不同,可以分成三类:

  • 商业授权工具:主要是 JMC(Java Mission Control)及它要使用到的 JFR(Java Flight Recorder)。JMC 在个人开发环境中使用是免费的,但在商业环境中使用则需付费
  • 正式支持工具:这一类工具属于长期被支持的工具
  • 实验性工具:这一类工具带有实验性质,日后可能会转正,也可能会在某个 JDK 版本中无声无息地消失

虚拟机进程状况工具

使用 jps(JVM Process Status Tool)可以列出正在运行的虚拟机进程,并显示虚拟机执行主类(main 函数所在的类)名称以及这些进程的本地虚拟机唯一 ID(LVMID,Local Virtual Machine Identifier)

该命令可以获取虚拟机进程的 LVMID,从而定位想要监控的程序,而 LVMID 一般与操作系统的进程 ID 一致

jps [options] [hostid]

jps 也可以通过 RMI 协议查询开启了 RMI 服务的远程 Java 虚拟机进程状态,参数 hostid 为 RMI 注册表中注册的主机名

jps 的其他常用选项如表:

选项

作用

-q

只输出 LVMID,省略主类的名称

-m

输出虚拟机进程启动时传递给主类 main() 函数的参数

-l

输出主类的全名,如果进程执行的是 JAR 包,则输出

-v

输出虚拟机进程启动时的 JVM 参数

虚拟机统计信息监视工具

jstat(JVM Statistics Monitoring Tool)是用于监视虚拟机各种运行状态信息的命令行工具,可以显示本地或者远程虚拟机进程中的类加载、内存、垃圾收集、即时编译等运行时数据

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

如果是本地虚拟机进程,VMID 与 LVMID 是一致的;如果是远程虚拟机进程,那 VMID 的格式应当是

[protocaol:][//]lvmid[@hostname[:port]/servername]

参数 interval 和 count 代表查询间隔和次数,如果省略这两个参数,说明只查询一次。假设需要每 250 毫秒查询一次进程 2764 的垃圾收集情况,一共查询 20 次,那命令应当是

jstat -gc 2764 250 20

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

选项

作用

-class

监视类加载、卸载数量、总空间以及类装载所耗费的时间

-gc

监视 Java 堆状况,包括 Eden 区、两个 Survivor 区、老年代、永久代等的容量、已用空间、垃圾收集时间合计等信息

-gccapacity

监视内容与 -gc 基本相同,但输出主要关注 Java 堆各个区域使用到的最大、最小空间

-gcutil

监视内容与 -gc 基本相同,但输出主要关注已使用空间占总空间的百分比

-gccause

与 -gcutil 功能一样,但会额外输出导致上一次垃圾收集产生的原因

-gcnew

监视新生代垃圾收集情况

-gcnewcapacity

监视内容与 -gcnew 基本相同,但输出主要关注使用到的最大、最小空间

-gcold

监视老年代垃圾收集情况

-gcoldcapacity

监视内容与 -gcold 基本相同,但输出主要关注使用到的最大、最小空间

-gcpermcapacity

输出永久代使用到的最大、最小空间

-compiler

输出即时编译器编译过的方法、耗时等信息

-printcompilation

输出已经被即时编译的方法

Java 配置信息工具

jinfo(Configuration Info for Ja.........

十二原里美
你这个年纪是站在太阳底下都会发光的年纪。
3
发布数
2
关注者
13085
累计阅读

热门教程文档

Java
12小节
C++
73小节
Spring Boot
24小节
Swift
54小节
Gin
17小节
广告