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

アウトライン

JDK1.7後、コマンドラインツールのjcmdを追加します。彼は、ヒープを導出するために使用することができる汎用性の高いツールである、Javaプロセスを参照して、輸出スレッド情報、GCを実行し、また(フライトレコーダーJMCツール)をサンプリングし、分析することができます。

コマンドの形式

1    jcmd <PID | メインクラス> <コマンド... | PerfCounter。印刷 | -fファイル>
 2    jcmd - L
 3    jcmd -h

説明

  • PID:診断プロセスID要求コマンドを受信します。
    メインクラス:メインクラスの診断要求コマンドを受信する処理。マッチング処理は、メインクラス名が含まれている場合には指定された任意のプロセスのサブストリングが一致しています。あなたは、複数のJavaプロセスを実行している場合は、同じメインクラスを共有し、診断コマンド要求は、これらのプロセスのすべてに送信されます。

  • コマンド:メインクラスを要求された診断プロセスコマンドを受信します。マッチング処理は、メインクラス名が含まれている場合には指定された任意のプロセスのサブストリングが一致しています。あなたは、複数のJavaプロセスを実行している場合は、同じメインクラスを共有し、診断コマンド要求は、これらのプロセスのすべてに送信されます。

    注:パラメータのいずれかにスペースが含まれる場合は、同封する英語単一引用符または二重引用符を使用する必要があります。また、あなたは、これらの基準マークに対処するためのオペレーティングシステムのシェルを防ぐために、単一または二重引用符でパラメータを転送するためにエスケープ文字を使用する必要があります。もちろん、あなたはアポストロフィで両方のパラメータをすることができますし、二重引用符(またはパラメータの両側に二重引用符、一重引用符で使用されるパラメータ)でパラメータを使用します。

  • Perfcounter.print:印刷対象のJavaプロセスのパフォーマンスカウンタで使用可能。パフォーマンスカウンタのリストは、生産変動へのJavaプロセスは異なる場合があります。

  • -fファイル:ファイルファイルから、その後、ターゲットのJavaプロセスでコマンド呼び出し読んコマンド。ファイルには、各コマンドは、別の行に書かなければなりません。先頭に「#」を持つ行は無視されます。コマンドはすべての行が完了するために呼び出され、または停止キーワードを指定して、コマンドを読み出す場合に、ファイルの処理を終了します。

  • -l:ビューすべてのプロセス情報のリスト。

  • -h:ビューのヘルプ情報。(-help付き)

-l jcmdプロセスを見ます

コマンド:jcmd -l
説明:ビューの現在のマシン上のすべてのJVMプロセス情報

1    jcmd 
 2    - jcmd L
 3つの    JPSを

これら三つのコマンドの効果は同じです

ビューのパフォーマンス統計

コマンド:jcmd PID PerfCounter.print
説明:指定されたプロセスのためのビューのパフォーマンス統計。

1個の C:\ WINDOWS \ SYSTEM32> jcmd 9592 PerfCounter。印刷
2  95923 java.ci.totalTime = 16704 
4 java.cls.loadedClasses = 438 
5 java.cls.sharedLoadedClasses = 0 
6 java.cls.sharedUnloadedClasses = 0 
7 java.cls.unloadedClasses = 0 
8 java.property.java .class.path = " D:\作業\ gitの\テスト\ターゲット\クラス" 
9 java.property.java.endorsed.dirs = " D:\プログラムファイル\のJava \ jre1.8.0_91 \ libに\承認" 
10のjava .property.java.ext.dirs = "D:\プログラムファイル\のJava \ jre1.8.0_91 \ libに\ extに; C:\ WINDOWS \日\のJava \ libに\ extに" 
11 java.property.java.home = " D:\プログラムファイル\のJava \ jre1。 8.0_91 " 
12 ...

リストに実行することができ、現在のJavaプロセスの実行中の操作

コマンド:jcmd PIDヘルプ

1個の C:\ Windowsの\ SYSTEM32> jcmd 9592 ヘルプ
 2 9592 3  以下のコマンドが利用可能である:
 4  JFR.stop
 5  JFR.start
 6  JFR.dump
 7  JFR.check
 8  VM.native_memory
 9  VM.check_commercial_features
 10  VM.unlock_commercial_features
 11  ManagementAgent.stop
 12  ManagementAgent.start_local
 13  ManagementAgent.start
 14  GC.rotate_log
 15  Thread.print
 16  GC.class_stats
 17  GC.class_histogram
 18 GC.heap_dump
 19  GC.run_finalization
 20  GC.run
 21  VM.uptime
 22  VM.flags
 23  VM.system_properties
 24  VM.command_line
 25  VM.version
 26ヘルプ

特定のコマンドを表示するためのオプション

:コマンドのオプションを表示したい場合は、例えば、以下のコマンドにより、JFR.dumpコマンドのオプションを見てみたい
jcmd 11772ヘルプJFR.dump

 

 

1.JRF関連のコマンド

同じのフライトレコーダ機能jmc.exeツールでJRF機能。
JRF関連の機能を使用するには、パラメータがVM.unlock_commercial_featuresロック解除ビジネス機能を使用する必要があります。

 

 

 

 

  • スタートJFRは
    jcmd $ PID JFR.start名= ABC:コマンドを実行し 、継続時間= 120秒を

  • JFRダンプ
    待ちに少なくとも期間(紙120Sを設定する)、コマンドを実行します。jcmd PID JFR.dump名= ABC、期間= 120Sは、ファイル名= abc.jfr( ファイル名は.jfr接尾辞でなければならないことに注意してください)

  • JFRは、状況を確認してください
    jcmd $ PID JFR.check名= ABC:コマンドを実行し 、継続時間= 120秒を

  • ストップJFRは
    jcmd $ PID JFR.stop名= ABC:コマンドを実行し 、継続時間= 120秒を

  • 分析JMC
    カットバック開発マシン、ステップ3で生成されたabc.jfrダウンロードは、JMCは、視覚分析を導入するabc.jfrでき、開い

VM.uptime

コマンド:jcmd PID VM.uptimeは
長いJVM起動時間を表示:説明:

GC.class_histogram

コマンド:jcmd PID GC.class_histogramの
説明:ビューシステム統計クラス

 

 

ここで効果jmapの-histo PIDと同一である
数およびフットプリントサイズを表示することができ、各クラスのインスタンス。

Thread.print

コマンド:jcmd PID Thread.printの
説明:表示スレッドスタック情報。

コマンド  jstack  コマンド。

GC.heap_dump

コマンド:jcmd PID GC.heap_dump FILE_NAMEの
説明:ビューJVMのヒープダンプ

1 C:\ユーザーは\ JJS> jcmd 10576 GC.heap_dump D:\ dump.hprof
 2 10576 3作成したヒープ・ダンプ・ファイル

跟 jmap命令:jmap -dump:format=b,file=heapdump.phrof pid 效果一样。
导出的 dump 文件,可以使用MAT 或者 Visual VM 等工具进行分析。

注意:如果只指定文件名,默认会生成在启动 JVM 的目录里。

VM.system_properties

命令:jcmd PID VM.system_properties
描述:查看 JVM 的属性信息

 1 C:\Users\jjs>jcmd 10576 VM.system_properties
 2 10576:
 3 #Wed Jan 31 22:30:20 CST 2018
 4 java.vendor=Oracle Corporation
 5 osgi.bundles.defaultStartLevel=4
 6 ......
 7 os.version=10.0
 8 osgi.arch=x86_64
 9 path.separator=;
10 java.vm.version=25.91-b15
11 org.osgi.supports.framework.fragment=true
12 user.variant=
13 osgi.framework.shape=jar
14 java.awt.printerjob=sun.awt.windows.WPrinterJob
15 osgi.instance.area.default=file\:/C\:/Users/jjs/eclipse-workspace/
16 sun.io.unicode.encoding=UnicodeLittle
17 org.osgi.framework.version=1.8.0
18 ......

VM.flags

命令:jcmd PID VM.flags
描述:查看 JVM 的启动参数

1 C:\Users\jjs>jcmd 10576 VM.flags
2 10576:
3 -XX:CICompilerCount=3 -XX:ConcGCThreads=1 
4 -XX:G1HeapRegionSize=1048576 -XX:InitialHeapSize=268435456 
5 -XX:MarkStackSize=4194304 -XX:MaxHeapSize=1073741824 
6 -XX:MaxNewSize=643825664 -XX:MinHeapDeltaBytes=1048576 
7 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops 
8 -XX:+UseFastUnorderedTimeStamps -XX:+UseG1GC 
9 -XX:-UseLargePagesIndividualAllocation -XX:+UseStringDeduplication

VM.command_line

命令:jcmd PID VM.command_line
描述:查看 JVM 的启动命令行

1 C:\Users\jjs>jcmd 10576 VM.command_line
2 10576:
3 VM Arguments:
4 jvm_args: -Dosgi.requiredJavaVersion=1.8 
5 -Dosgi.instance.area.default[email protected]/eclipse-workspace 
6 -XX:+UseG1GC -XX:+UseStringDeduplication 
7 -Dosgi.requiredJavaVersion=1.8 -Xms256m -Xmx1024m
8 java_command: <unknown>
9 java_class_path (initial): D:\tool\...\org.eclipse.equinox.launcher.jar

GC.run_finalization

命令:jcmd PID GC.run_finalization
描述: 对 JVM 执行 java.lang.System.runFinalization()

1 C:\Users\jjs>jcmd 10576 GC.run_finalization
2 10576:
3 Command executed successfully

执行一次finalization操作,相当于执行java.lang.System.runFinalization()

GC.run

命令:jcmd PID GC.run
描述:对 JVM 执行 java.lang.System.gc()

1 C:\Users\jjs>jcmd 10576 GC.run
2 10576:
3 Command executed successfully

告诉垃圾收集器打算进行垃圾收集,而垃圾收集器进不进行收集是不确定的。

PerfCounter.print

命令:jcmd PID PerfCounter.print
描述:查看 JVM 性能相关的参数

1 C:\Users\jjs>jcmd 10576 PerfCounter.print
2 10576:
3 java.ci.totalTime=93024843
4 java.cls.loadedClasses=18042
5 java.cls.sharedLoadedClasses=0
6 java.cls.sharedUnloadedClasses=0
7 java.cls.unloadedClasses=3
8 ......

VM.version

命令:jcmd PID VM.version
描述:查看目标jvm进程的版本信息

1 C:\Users\jjs>jcmd 10576 VM.version
2 10576:
3 Java HotSpot(TM) 64-Bit Server VM version 25.91-b15
4 JDK 8.0_91

 

おすすめ

転載: www.cnblogs.com/lgjava/p/12180791.html