アウトライン
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 9592: 3 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の
説明:表示スレッドスタック情報。
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