JVM常用工具

1. jps

jps是用来查看java进程的工具

1.1 jps -q

jps -q 只显示pid,不显示class名称,jar文件名和传递给main 方法的参数

1.2 jps -m

jps -m 输出main方法的参数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n1Tsc0j5-1595839250340)
JVM常用工具

1.3 jps -v

输出jvm的参数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3XZtgdyG-1595839250346)
JVM常用工具

1.4 jps -l

输出应用程序main class的完整package名 或者 应用程序的jar文件完整路径名

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y4S1LWc2-1595839250348)
JVM常用工具

2. jstat

主要用于对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控。

2.1 参数解释

Usage: jstat -help|-options

jstat - [-t] [-h] [ []]

参数解释:

Options — 选项,我们一般使用 -gcutil 查看gc情况

vmid — VM的进程号,即当前运行的java进程号

interval[s|ms] —— 间隔时间,单位为秒或者毫秒,默认为ms。必须是正整型。

count — 打印次数,如果缺省则打印无数次

输出参数:

-hn 每个n行输出一次列表头。默认为0,仅输出一次。

-tn 在第一列输出时间戳。该时间戳从jvm启动开始。

-JjavaOption

具体参数:

-class: 统计class loader 行为信息

-compiler: 统计编译行为信息

-gc:统计jdk gc时heap信息

-gccapacity:统计不同的generations(新生代、老生代、永久代)相应的heap容量信息

-gccause:统计gc的情况,以及引起gc的事情。同-gcutil

-gcnew:统计新生代的gc情况

-gcnewcapacity:统计新生代gc时heap的容量信息

-gcold:统计老生代的gc情况

-gcoldcapacity:统计老生代gc时heap容量信息

-gcpermcapacity:统计永久代gc时的容量信息

-gcutil:统计heap的gc情况

-printcompilation:没用过

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eL7x6pFL-1595839250350)(/Users/dengquanliang/Library/Application%20Support/typora-user-images/image-20200727145237064.png)]

jstat -gcutil 47965 250 20: 进程号47965,每隔250ms进行一次采样,采样20次,如果没有表示一直采样

S0和S1分别表示Heap上Survivor0和Survivor1的使用百分比

E表示Eden的使用百分比

O表示Old space的使用百分比

M表示元数据区使用比例

CCS表示压缩使用比例

YGC和YGCT分别表示从程序启动到采样时发生的young GC次数和Young GC所用的时间(单位时秒)

FGC和FGCT分别表示从程序启动到采样时发生的full GC次数和full GC所用的时间(单位时秒)

GCT表示从程序启动到采样时垃圾回收所用的时间(单位时秒)

3. jmap

可以打印出java进程的内存内对象的使用情况,可以把内存的deap信息打印出来,然后使用内存分析工具MAT(Memory Analysis Tool)进行分析,也可以结合jhat(java heap analysis tool)分析

Usage:

jmap [option]

2.1 用法

1、jmap -dump:format=b,file=hotel_sc.hprof pid

将内存的二进制文件dump下来,文件名称:hotel_sc.hprof

然后可以使用MAT或者jhat分析

2、jmap -heap pid

打印堆的配置信息以及堆的使用情况

4. jstack

Jstack用于打印出给定的Java进程ID或core file或远程调试服务的Java堆栈信息

4.1 jstack -l

jstack -l pid: -l参数用于打印出锁相关的信息

相关文章: