jvm performance tuning tool jcmd

One, jcmd command use

First list the common usage of jcmd:

  1. Heap histogram view: view the class statistics information GC.class_histogram in the system,
  2. Heap dump: export heap information GC.heap_dump,
  3. Get system Properties content VM.system_properties
  4. Get the startup parameter VM.flags
  5. Get all performance related data PerfCounter.print
  6. View native memory information: jcmd process_id VM.native_memory summary
  7. View CompressedClassSpace size: jcmd pid GC.heap_info

 

Overview

 

After JDK 1.7, a command line tool jcmd has been added. It is a multifunctional tool that can be used to export heap, view Java process, export thread information, perform GC, etc.

Usage example

  1. jcmd -l/jcmd pid  help

 

2. View the virtual machine startup time VM.uptime

 

3. Print thread stack information Thread.print

jcmd 18370 Thread.print

 

4. View class statistics in the system 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. Export stack information GC.heap_dump

6. Obtain the system Properties content VM.system_properties

 

7. Get the startup parameter 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.naming.java.javaURLContextFactory
sun.boot.library.path=/data/cnrusr/jdk1.8.0_231/jre/lib/amd64
PID=28391
jdk.tls.ephemeralDHKeySize=2048
java.version=1.8.0_231
java.util.logging.manager=org.apache.juli.ClassLoaderLogManager
user.timezone=Asia/Shanghai
sun.arch.data.model=64
java.util.concurrent.ForkJoinPool.common.threadFactory=org.apache.catalina.startup.SafeForkJoinWorkerThreadFactory
java.endorsed.dirs=/data/cnrusr/jdk1.8.0_231/jre/lib/endorsed
sun.cpu.isalist=
sun.jnu.encoding=UTF-8
file.encoding.pkg=sun.io
package.access=sun.,org.apache.catalina.,org.apache.coyote.,org.apache.jasper.,org.apache.tomcat.
file.separator=/
java.specification.name=Java Platform API Specification
java.class.version=52.0
user.country=US
java.home=/data/cnrusr/jdk1.8.0_231/jre
java.vm.info=mixed mode
os.version=3.10.0-327.el7.x86_64
sun.font.fontmanager=sun.awt.X11FontManager
path.separator=\:
java.vm.version=25.231-b11
java.protocol.handler.pkgs=org.apache.catalina.webresources
java.awt.printerjob=sun.print.PSPrinterJob
sun.io.unicode.encoding=UnicodeLittle
awt.toolkit=sun.awt.X11.XToolkit
package.definition=sun.,java.,org.apache.catalina.,org.apache.coyote.,org.apache.jasper.,org.apache.naming.,org.apache.tomcat.
java.naming.factory.url.pkgs=org.apache.naming
java.security.egd=file\:/dev/./urandom
user.home=/data/cnrusr
org.apache.catalina.security.SecurityListener.UMASK=0027
java.specification.vendor=Oracle Corporation
tomcat.util.scan.StandardJarScanFilter.jarsToSkip=annotations-api.jar,ant-junit*.jar,ant-launcher.jar,ant.jar,asm-*.jar,aspectj*.jar,bootstrap.jar,catalina-ant.jar,catalina-ha.jar,catalina-jmx-remote.jar,catalina-storeconfig.jar,catalina-tribes.jar,catalina-ws.jar,catalina.jar,cglib-*.jar,cobertura-*.jar,commons-beanutils*.jar,commons-codec*.jar,commons-collections*.jar,commons-daemon.jar,commons-dbcp*.jar,commons-digester*.jar,commons-fileupload*.jar,commons-httpclient*.jar,commons-io*.jar,commons-lang*.jar,commons-logging*.jar,commons-math*.jar,commons-pool*.jar,dom4j-*.jar,easymock-*.jar,ecj-*.jar,el-api.jar,geronimo-spec-jaxrpc*.jar,h2*.jar,hamcrest-*.jar,hibernate*.jar,httpclient*.jar,icu4j-*.jar,jasper-el.jar,jasper.jar,jaspic-api.jar,jaxb-*.jar,jaxen-*.jar,jdom-*.jar,jetty-*.jar,jmx-tools.jar,jmx.jar,jsp-api.jar,jstl.jar,jta*.jar,junit-*.jar,junit.jar,log4j*.jar,mail*.jar,objenesis-*.jar,oraclepki.jar,oro-*.jar,servlet-api-*.jar,servlet-api.jar,slf4j*.jar,taglibs-standard-spec-*.jar,tagsoup-*.jar,tomcat-api.jar,tomcat-coyote.jar,tomcat-dbcp.jar,tomcat-i18n-en.jar,tomcat-i18n-es.jar,tomcat-i18n-fr.jar,tomcat-i18n-ja.jar,tomcat-i18n-ru.jar,tomcat-jdbc.jar,tomcat-jni.jar,tomcat-juli-adapters.jar,tomcat-juli.jar,tomcat-util-scan.jar,tomcat-util.jar,tomcat-websocket.jar,tools.jar,websocket-api.jar,wsdl4j*.jar,xercesImpl.jar,xml-apis.jar,xmlParserAPIs-*.jar,xmlParserAPIs.jar,xom-*.jar
java.library.path=/usr/java/packages/lib/amd64\:/usr/lib64\:/lib64\:/lib\:/usr/lib
java.vendor.url=http\://java.oracle.com/
spring.beaninfo.ignore=true
java.vm.vendor=Oracle Corporation
common.loader="${catalina.base}/lib","${catalina.base}/lib/*.jar","${catalina.home}/lib","${catalina.home}/lib/*.jar"
java.runtime.name=Java(TM) SE Runtime Environment
sun.java.command=org.apache.catalina.startup.Bootstrap start
java.class.path=/data/cnrusr/cnr-base-srv/bin/bootstrap.jar\:/data/cnrusr/cnr-base-srv/bin/tomcat-juli.jar
java.vm.specification.name=Java Virtual Machine Specification
java.vm.specification.version=1.8
catalina.home=/data/cnrusr/cnr-base-srv
sun.cpu.endian=little
sun.os.patch.level=unknown
java.awt.headless=true
java.io.tmpdir=/data/cnrusr/cnr-base-srv/temp
java.vendor.url.bug=http\://bugreport.sun.com/bugreport/
server.loader=
os.arch=amd64
java.awt.graphicsenv=sun.awt.X11GraphicsEnvironment
java.ext.dirs=/data/cnrusr/jdk1.8.0_231/jre/lib/ext\:/usr/java/packages/lib/ext
user.dir=/data/cnrusr
line.separator=\n
java.vm.name=Java HotSpot(TM) 64-Bit Server VM
ignore.endorsed.dirs=
file.encoding=UTF-8
java.specification.version=1.8
[cnrusr@h-vbw2d0tz ~]$ jcmd 28391 VM.flags
28391:
-XX:CICompilerCount=3 -XX:InitialHeapSize=536870912 -XX:MaxHeapSize=1073741824 -XX:MaxNewSize=357564416 -XX:MinHeapDeltaBytes=524288 -XX:NewSize=178782208 -XX:OldSize=358088704 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseParallelGC 

8. Get all performance related data PerfCounter.print

 jcmd 28391 PerfCounter.print
28391:
java.ci.totalTime=37991909914
java.cls.loadedClasses=14419
java.cls.sharedLoadedClasses=0
java.cls.sharedUnloadedClasses=0
java.cls.unloadedClasses=1
java.property.java.class.path="/data/cnrusr/cnr-base-srv/bin/bootstrap.jar:/data/cnrusr/cnr-base-srv/bin/tomcat-juli.jar"
java.property.java.endorsed.dirs="/data/cnrusr/jdk1.8.0_231/jre/lib/endorsed"
java.property.java.ext.dirs="/data/cnrusr/jdk1.8.0_231/jre/lib/ext:/usr/java/packages/lib/ext"
java.property.java.home="/data/cnrusr/jdk1.8.0_231/jre"
java.property.java.library.path="/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib"
java.property.java.version="1.8.0_231"
java.property.java.vm.info="mixed mode"
java.property.java.vm.name="Java HotSpot(TM) 64-Bit Server VM"
java.property.java.vm.specification.name="Java Virtual Machine Specification"
java.property.java.vm.specification.vendor="Oracle Corporation"
java.property.java.vm.specification.version="1.8"
java.property.java.vm.vendor="Oracle Corporation"
java.property.java.vm.version="25.231-b11"
java.rt.vmArgs="-Djava.util.logging.config.file=/data/cnrusr/cnr-base-srv/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.security.egd=file:/dev/./urandom -Dfile.encoding=UTF-8 -Xms512m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=256m -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -Dcatalina.base=/data/cnrusr/cnr-base-srv -Dcatalina.home=/data/cnrusr/cnr-base-srv -Djava.io.tmpdir=/data/cnrusr/cnr-base-srv/temp"
java.rt.vmFlags=""
java.threads.daemon=47
java.threads.live=48
java.threads.livePeak=50
java.threads.started=63
sun.ci.compilerThread.0.compiles=650
sun.ci.compilerThread.0.method=""
sun.ci.compilerThread.0.time=1117145152
sun.ci.compilerThread.0.type=1
sun.ci.compilerThread.1.compiles=693
sun.ci.compilerThread.1.method=""
sun.ci.compilerThread.1.time=1301104
sun.ci.compilerThread.1.type=1
sun.ci.compilerThread.2.compiles=6828
sun.ci.compilerThread.2.method=""
sun.ci.compilerThread.2.time=221680382
sun.ci.compilerThread.2.type=1
sun.ci.lastFailedMethod="org/springframework/util/ReflectionUtils doWithMethods"
sun.ci.lastFailedType=1
sun.ci.lastInvalidatedMethod=""
sun.ci.lastInvalidatedType=0
sun.ci.lastMethod="sun/util/calendar/AbstractCalendar getCalendarDate"
sun.ci.lastSize=1487
sun.ci.lastType=1
sun.ci.nmethodCodeSize=15607456
sun.ci.nmethodSize=28000616
sun.ci.osrBytes=61864
sun.ci.osrCompiles=99
sun.ci.osrTime=1245684638
sun.ci.standardBytes=1544320
sun.ci.standardCompiles=8069
sun.ci.standardTime=36746225276
sun.ci.threads=3
sun.ci.totalBailouts=3
sun.ci.totalCompiles=8168
sun.ci.totalInvalidates=0
sun.classloader.findClassTime=3932181324
sun.classloader.findClasses=814
sun.classloader.parentDelegationTime=42794879
sun.cls.appClassBytes=39919584
sun.cls.appClassLoadCount=12456
sun.cls.appClassLoadTime=9193042941
sun.cls.appClassLoadTime.self=6062385331
sun.cls.classInitTime=6299038810
sun.cls.classInitTime.self=2692132640
sun.cls.classLinkedTime=4264167529
sun.cls.classLinkedTime.self=330410885
sun.cls.classVerifyTime=3929366184
sun.cls.classVerifyTime.self=1020855142
sun.cls.defineAppClassTime=3669002678
sun.cls.defineAppClassTime.self=335665671
sun.cls.defineAppClasses=10199
sun.cls.initializedClasses=9857
sun.cls.isUnsyncloadClassSet=0
sun.cls.jniDefineClassNoLockCalls=125
sun.cls.jvmDefineClassNoLockCalls=10027
sun.cls.jvmFindLoadedClassNoLockCalls=21198
sun.cls.linkedClasses=11439
sun.cls.loadInstanceClassFailRate=0
sun.cls.loadedBytes=27057960
sun.cls.lookupSysClassTime=524220422
sun.cls.methodBytes=12522479
sun.cls.nonSystemLoaderLockContentionRate=0
sun.cls.parseClassTime=3833153419
sun.cls.parseClassTime.self=2646883477
sun.cls.sharedClassLoadTime=1220665
sun.cls.sharedLoadedBytes=0
sun.cls.sharedUnloadedBytes=0
sun.cls.sysClassBytes=13069966
sun.cls.sysClassLoadTime=928728098
sun.cls.systemLoaderLockContentionRate=0
sun.cls.time=14139552564
sun.cls.unloadedBytes=928
sun.cls.unsafeDefineClassCalls=988
sun.cls.verifiedClasses=11369
sun.gc.cause="No GC"
sun.gc.collector.0.invocations=50040
sun.gc.collector.0.lastEntryTime=70630485286875
sun.gc.collector.0.lastExitTime=70630489088096
sun.gc.collector.0.name="PSScavenge"
sun.gc.collector.0.time=263782170232
sun.gc.collector.1.invocations=3
sun.gc.collector.1.lastEntryTime=48662468676
sun.gc.collector.1.lastExitTime=49095486170
sun.gc.collector.1.name="PSParallelCompact"
sun.gc.collector.1.time=538711749
sun.gc.compressedclassspace.capacity=10485760
sun.gc.compressedclassspace.maxCapacity=1073741824
sun.gc.compressedclassspace.minCapacity=0
sun.gc.compressedclassspace.used=9892648
sun.gc.generation.0.capacity=357564416
sun.gc.generation.0.maxCapacity=357564416
sun.gc.generation.0.minCapacity=178782208
sun.gc.generation.0.name="new"
sun.gc.generation.0.space.0.capacity=356515840
sun.gc.generation.0.space.0.initCapacity=0
sun.gc.generation.0.space.0.maxCapacity=356515840
sun.gc.generation.0.space.0.name="eden"
sun.gc.generation.0.space.0.used=299482704
sun.gc.generation.0.space.1.capacity=524288
sun.gc.generation.0.space.1.initCapacity=0
sun.gc.generation.0.space.1.maxCapacity=119013376
sun.gc.generation.0.space.1.name="s0"
sun.gc.generation.0.space.1.used=262144
sun.gc.generation.0.space.2.capacity=524288
sun.gc.generation.0.space.2.initCapacity=0
sun.gc.generation.0.space.2.maxCapacity=119013376
sun.gc.generation.0.space.2.name="s1"
sun.gc.generation.0.space.2.used=0
sun.gc.generation.0.spaces=3
sun.gc.generation.1.capacity=358088704
sun.gc.generation.1.maxCapacity=716177408
sun.gc.generation.1.minCapacity=358088704
sun.gc.generation.1.name="old"
sun.gc.generation.1.space.0.capacity=358088704
sun.gc.generation.1.space.0.initCapacity=358088704
sun.gc.generation.1.space.0.maxCapacity=716177408
sun.gc.generation.1.space.0.name="old"
sun.gc.generation.1.space.0.used=63912152
sun.gc.generation.1.spaces=1
sun.gc.lastCause="Allocation Failure"
sun.gc.metaspace.capacity=80478208
sun.gc.metaspace.maxCapacity=1145044992
sun.gc.metaspace.minCapacity=0
sun.gc.metaspace.used=77482992
sun.gc.policy.avgBaseFootprint=268435456
sun.gc.policy.avgMajorIntervalTime=16413
sun.gc.policy.avgMajorPauseTime=178
sun.gc.policy.avgMinorIntervalTime=543
sun.gc.policy.avgMinorPauseTime=3
sun.gc.policy.avgOldLive=26298448
sun.gc.policy.avgPretenuredPaddedAvg=0
sun.gc.policy.avgPromotedAvg=0
sun.gc.policy.avgPromotedDev=14075
sun.gc.policy.avgPromotedPaddedAvg=42227
sun.gc.policy.avgSurvivedAvg=275460
sun.gc.policy.avgSurvivedDev=19852
sun.gc.policy.avgSurvivedPaddedAvg=335018
sun.gc.policy.avgYoungLive=275460
sun.gc.policy.boundaryMoved=0
sun.gc.policy.changeOldGenForMajPauses=0
sun.gc.policy.changeOldGenForMinPauses=0
sun.gc.policy.changeYoungGenForMajPauses=0
sun.gc.policy.changeYoungGenForMinPauses=0
sun.gc.policy.collectors=2
sun.gc.policy.decideAtFullGc=0
sun.gc.policy.decreaseForFootprint=0
sun.gc.policy.decrementTenuringThresholdForGcCost=0
sun.gc.policy.decrementTenuringThresholdForSurvivorLimit=0
sun.gc.policy.desiredSurvivorSize=524288
sun.gc.policy.edenSize=356515840
sun.gc.policy.freeSpace=661127168
sun.gc.policy.fullFollowsScavenge=0
sun.gc.policy.gcTimeLimitExceeded=0
sun.gc.policy.generations=3
sun.gc.policy.increaseOldGenForThroughput=0
sun.gc.policy.increaseYoungGenForThroughput=5
sun.gc.policy.incrementTenuringThresholdForGcCost=1
sun.gc.policy.liveAtLastFullGc=36333032
sun.gc.policy.liveSpace=295009344
sun.gc.policy.majorCollectionSlope=0
sun.gc.policy.majorGcCost=3
sun.gc.policy.majorPauseOldSlope=4528
sun.gc.policy.majorPauseYoungSlope=1217
sun.gc.policy.maxTenuringThreshold=15
sun.gc.policy.minorCollectionSlope=0
sun.gc.policy.minorGcCost=1
sun.gc.policy.minorPauseOldSlope=-85
sun.gc.policy.minorPauseTime=3
sun.gc.policy.minorPauseYoungSlope=-69
sun.gc.policy.mutatorCost=95
sun.gc.policy.name="ParScav:MSC"
sun.gc.policy.oldCapacity=358088704
sun.gc.policy.oldEdenSize=356515840
sun.gc.policy.oldPromoSize=304611328
sun.gc.policy.promoSize=304611328
sun.gc.policy.promoted=0
sun.gc.policy.scavengeSkipped=0
sun.gc.policy.survived=262144
sun.gc.policy.survivorOverflowed=0
sun.gc.policy.tenuringThreshold=15
sun.gc.policy.youngCapacity=357040128
sun.gc.tlab.alloc=44564732
sun.gc.tlab.allocThreads=5
sun.gc.tlab.fastWaste=0
sun.gc.tlab.fills=54
sun.gc.tlab.gcWaste=1032
sun.gc.tlab.maxFastWaste=0
sun.gc.tlab.maxFills=50
sun.gc.tlab.maxGcWaste=258
sun.gc.tlab.maxSlowAlloc=0
sun.gc.tlab.maxSlowWaste=492
sun.gc.tlab.slowAlloc=0
sun.gc.tlab.slowWaste=492
sun.os.hrt.frequency=1000000000
sun.os.hrt.ticks=70638919051950
sun.perfdata.majorVersion=2
sun.perfdata.minorVersion=0
sun.perfdata.overflow=0
sun.perfdata.size=32768
sun.perfdata.timestamp=901056305
sun.perfdata.used=17808
sun.property.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"
sun.property.sun.boot.library.path="/data/cnrusr/jdk1.8.0_231/jre/lib/amd64"
sun.rt._sync_ContendedLockAttempts=3479
sun.rt._sync_Deflations=787
sun.rt._sync_EmptyNotifications=0
sun.rt._sync_FailedSpins=0
sun.rt._sync_FutileWakeups=6131
sun.rt._sync_Inflations=791
sun.rt._sync_MonExtant=640
sun.rt._sync_MonInCirculation=0
sun.rt._sync_MonScavenged=0
sun.rt._sync_Notifications=11411
sun.rt._sync_Parks=19336
sun.rt._sync_PrivateA=0
sun.rt._sync_PrivateB=0
sun.rt._sync_SlowEnter=0
sun.rt._sync_SlowExit=0
sun.rt._sync_SlowNotify=0
sun.rt._sync_SlowNotifyAll=0
sun.rt._sync_SuccessfulSpins=0
sun.rt.applicationTime=70354655239782
sun.rt.createVmBeginTime=1600325560947
sun.rt.createVmEndTime=1600325560994
sun.rt.internalVersion="Java HotSpot(TM) 64-Bit Server VM (25.231-b11) for linux-amd64 JRE (1.8.0_231-b11), built on Oct  5 2019 03:00:41 by "java_re" with gcc 7.3.0"
sun.rt.interruptedBeforeIO=0
sun.rt.interruptedDuringIO=0
sun.rt.javaCommand="org.apache.catalina.startup.Bootstrap start"
sun.rt.jvmCapabilities="1100000000000000000000000000000000000000000000000000000000000000"
sun.rt.jvmVersion=434569227
sun.rt.safepointSyncTime=296492599583
sun.rt.safepointTime=569389109505
sun.rt.safepoints=50911
sun.rt.threadInterruptSignaled=0
sun.rt.vmInitDoneTime=1600325560980
sun.threads.vmOperationTime=267093118161
sun.urlClassLoader.readClassBytesTime=386235400
sun.zip.zipFile.openTime=223402709579
sun.zip.zipFiles=1181534

 9.

 

 

Guess you like

Origin blog.csdn.net/superiorpengFight/article/details/108658248