jvmパフォーマンスチューニングツールjcmd

1つは、jcmdコマンドを使用する

まず、jcmdの一般的な使用法をリストします。

  1. ヒープヒストグラムビュー:システム内のクラス統計情報GC.class_histogramを表示します。
  2. ヒープダンプ:ヒープ情報のエクスポートGC.heap_dump、
  3. システムプロパティのコンテンツを取得するVM.system_properties
  4. 起動パラメータVM.flagsを取得します
  5. すべてのパフォーマンス関連データを取得PerfCounter.print
  6. ネイティブメモリ情報の表示:jcmd process_id VM.native_memory summary
  7. CompressedClassSpaceサイズの表示:jcmd pid GC.heap_info

 

概要概要

 

JDK 1.7以降、コマンドラインツールjcmdが追加されました。これは、ヒープのエクスポート、Javaプロセスの表示、スレッド情報のエクスポート、GCの実行などに使用できる多機能ツールです

使用例

  1. jcmd -l / jcmdpidヘルプ

 

2.仮想マシンの起動時間を表示するVM.uptime

 

3.スレッドスタック情報を出力しますThread.print

jcmd 18370 Thread.print

 

4.システムjcmdpidGC.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.システムプロパティコンテンツ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.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.すべてのパフォーマンス関連データを取得します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.9。

 

 

おすすめ

転載: blog.csdn.net/superiorpengFight/article/details/108658248