Java虚拟机 命令行工具
时间:2017-12-30 10:20:03
参考:
- 深入理解Java虚拟机 周志明
环境:
- jdk1.9
命令行工具#
jdk自带的一些命令行工具,用来分析运行的java实例的内存使用情况。
jps(JVM Process Status Tool): 查看虚拟机进程状况#
-q显示进程ID-m显示启动时传递给主类的参数-l输出主类的全名(包含包路径)-v启动时指定的虚拟机配置参数
jstat 虚拟机统计信息监视工具,以及传递配置参数给虚拟机#
用法:jstat options -hn <vmid> 输出时间间隔 输出次数
options 可以是下面的参数,-hn 表示多少次之后输出一次标题。
-class-compiler-gcGC 信息。-gccapacity-gccause导致GC的原因,百分比形式显示。-gcmetacapacity-gcnew-gcnewcapacity-gcold-gcoldcapacity-gcutil-printcompilation
示例:
- 监听老年代GC信息。
1jstat -gcold -h5 59270 1000 10-
监听虚拟机GC信息。
jstat -gc -h20 59270 1000 1000
-
jinfo 查看系统参数,查看和设置 VMFLag。#
-
jinfo 123456输出信息如下:Java System Properties: java.runtime.name = Java(TM) SE Runtime Environment java.vm.version = 25.221-b11 sun.boot.library.path = /home/xiaotian/software/java/jdk1.8.0_221/jre/lib/amd64 java.protocol.handler.pkgs = org.springframework.boot.loader java.vendor.url = http://java.oracle.com/ java.vm.vendor = Oracle Corporation path.separator = : ... ... java.version = 1.8.0_221 java.ext.dirs = /home/xiaotian/software/java/jdk1.8.0_221/jre/lib/ext:/usr/java/packages/lib/ext sun.boot.class.path = /home/xiaotian/software/java/jdk1.8.0_221/jre/lib/resources.jar:/home/xiaotian/software/java/jdk1.8.0_221/jre/lib/rt.jar:/home/xiaotian/software/java/jdk1.8.0_221/jre/lib/sunrsasign.jar:/home/xiaotian/software/java/jdk1.8.0_221/jre/lib/jsse.jar:/home/xiaotian/software/java/jdk1.8.0_221/jre/lib/jce.jar:/home/xiaotian/software/java/jdk1.8.0_221/jre/lib/charsets.jar:/home/xiaotian/software/java/jdk1.8.0_221/jre/lib/jfr.jar:/home/xiaotian/software/java/jdk1.8.0_221/jre/classes java.awt.headless = true java.vendor = Oracle Corporation catalina.base = /tmp/tomcat.5571146530846755836.8082 com.zaxxer.hikari.pool_number = 1 file.separator = / java.vendor.url.bug = http://bugreport.sun.com/bugreport/ sun.io.unicode.encoding = UnicodeLittle sun.cpu.endian = little sun.cpu.isalist = VM Flags: Non-default VM flags: -XX:CICompilerCount=2 -XX:InitialHeapSize=134217728 -XX:MaxHeapSize=536870912 -XX:MaxNewSize=178913280 -XX:MinHeapDeltaBytes=196608 -XX:NewSize=44695552 -XX:OldSize=89522176 -XX:+PrintGC -XX:+PrintGCTimeStamps -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseFastUnorderedTimeStamps Command line: -XX:+PrintGC -Xloggc:./gc.log -Xms128m -Xmx512m -Dloader.path=/home/xiaotian/tools/lib/ -Dspring.profiles.active=dev -
设置 VM FLAG。
jinfo -flag <name>打印 VM Flag。jinfo [+|-] -flag启用或禁用 VM Flag。jinfo -flag <name>=<value>设置 VM flag。jinfo -flags 12345打印 VM Flag。
jmap 输出指定进程的详细信息#
-
jmap -h查看帮助信息。 jmap -heap 12345查看虚拟机堆内存使用情况。jmap -histo 12345查看类的实例数量以及占用内存。jmap -clstats 12345查看类加载器统计信息。jmap -finalizerinfo 12345查看等待释放的类。jmap -dump:format=b,file=./heap.bin 12345dump 堆栈信息。
jstack 堆栈跟踪工具#
jstack -l 12345查看线程堆栈信息。jstack -m 12345查看线程堆栈信息,内存地址模式。jstack -F -l 12345强制执行,当jstack -l无响应时使用。
命令行工具输出信息含义#
S0C、S1C、S0U、S1U、S0CMX、SC1MXSurvior 0/1 容量、使用量和最大容量。EC EUEden 区容量和使用量。OC OU老年代容量和使用量。M MC MU MCMN MCMXMetaSpace 区使用率、容量、使用量、最小容量和最大容量。YGC YGCT新生代GC次数和耗时。FGC FGCTFULL GC 次数和耗时。GCTGC的全部耗时。NGCMN NGCMX新生代最小和最大容量。TT MTT对象经过指定次数的垃圾回收会被复制到老年代。Loadedjvm Unloadedjvm加载类数量和未加载类数量。CCS CCSC CCSU CCSMN CCSMX压缩使用率、容量、使用量、最小容量和最大容量。