一、jcmd命令使用
先罗列下jcmd的常见用法:
- 堆直方图查看:查看系统中类统计信息GC.class_histogram,
- 堆转储:导出堆信息GC.heap_dump,
- 获取系统Properties内容VM.system_properties
- 获取启动参数VM.flags
- 获取所有性能相关数据PerfCounter.print
- 查看原生内存信息:jcmd process_id VM.native_memory summary
-
查看CompressedClassSpace大小:jcmd pid GC.heap_info
概述
在JDK 1.7之后,新增了一个命令行工具jcmd。它是一个多功能工具,可以用来导出堆,查看Java进程,导出线程信息,执行GC等。
使用示例
- jcmd -l/jcmd pid help
2.查看虚拟机启动时间VM.uptime
3.打印线程栈信息Thread.print
jcmd 18370 Thread.print
4.查看系统中类统计信息 jcmd pid GC.histogram
执行命令:jcmd 18370 GC.class_histogram
执行结果:
10870: 1 16 sun.reflect.GeneratedMethodAccessor552
10871: 1 16 sun.reflect.GeneratedMethodAccessor553
10872: 1 16 sun.reflect.GeneratedMethodAccessor554
10873: 1 16 sun.reflect.GeneratedMethodAccessor555
10874: 1 16 sun.reflect.GeneratedMethodAccessor556
10875: 1 16 sun.reflect.GeneratedMethodAccessor557
10876: 1 16 sun.reflect.GeneratedMethodAccessor558
10877: 1 16 sun.reflect.GeneratedMethodAccessor559
10878: 1 16 sun.reflect.GeneratedMethodAccessor56
10879: 1 16 sun.reflect.GeneratedMethodAccessor560
10880: 1 16 sun.reflect.GeneratedMethodAccessor561
10881: 1 16 sun.reflect.GeneratedMethodAccessor562
10882: 1 16 sun.reflect.GeneratedMethodAccessor563
10883: 1 16 sun.reflect.GeneratedMethodAccessor564
5.导出堆栈信息 GC.heap_dump
6.获取系统Properties内容VM.system_properties
7.获取启动参数VM.flags
jcmd 28391 VM.system_properties
28391:
#Fri Sep 18 10:27:13 CST 2020
java.vendor=Oracle Corporation
sun.java.launcher=SUN_STANDARD
catalina.base=/data/cnrusr/cnr-base-srv
sun.management.compiler=HotSpot 64-Bit Tiered Compilers
sun.nio.ch.bugLevel=
catalina.useNaming=true
os.name=Linux
sun.boot.class.path=/data/cnrusr/jdk1.8.0_231/jre/lib/resources.jar\:/data/cnrusr/jdk1.8.0_231/jre/lib/rt.jar\:/data/cnrusr/jdk1.8.0_231/jre/lib/sunrsasign.jar\:/data/cnrusr/jdk1.8.0_231/jre/lib/jsse.jar\:/data/cnrusr/jdk1.8.0_231/jre/lib/jce.jar\:/data/cnrusr/jdk1.8.0_231/jre/lib/charsets.jar\:/data/cnrusr/jdk1.8.0_231/jre/lib/jfr.jar\:/data/cnrusr/jdk1.8.0_231/jre/classes
java.util.logging.config.file=/data/cnrusr/cnr-base-srv/conf/logging.properties
java.vm.specification.vendor=Oracle Corporation
java.runtime.version=1.8.0_231-b11
user.name=cnrusr
tomcat.util.scan.StandardJarScanFilter.jarsToScan=log4j-taglib*.jar,log4j-web*.jar,log4javascript*.jar,slf4j-taglib*.jar
shared.loader=
tomcat.util.buf.StringCache.byte.enabled=true
user.language=en
java.naming.factory.initial=org.apache.namin