blog

JDKパフォーマンス監視ツール

1jps main function: Javaプロセスのリスト 1.1-v: Java仮想マシンに渡されたパラメータを表示可能 1.2-m: Javaプロセスに渡されたパラメータをエクスポートするた...

Sep 12, 2020 · 6 min. read
シェア

jps

主な機能:Javaプロセスのリスト

-v: Java仮想マシンに渡されるパラメーターを表示できます。

 JpsDemo -XX:+PrintFlagsFinal -XX:SurvivorRatio=2 -javaagent:D:\IDEA\IDEA2017\installpath\IntelliJ IDEA \lib\idea_rt.jar=56858:D:\IDEA\IDEA2017\installpath\IntelliJ IDEA \bin -Dfile.encoding=UTF-8

-m: 出力パラメーターとしてJavaプロセスに渡すパラメーター

3108 Jps -m
20152 JpsDemo  RemoteMavenServer

-l: メイン関数のフルパスを出力するために使用できます。

 sun.tools.jps.Jps
 org.jetbrains.jps.cmdline.Launcher
6380 org.jetbrains.idea.maven.server.RemoteMavenServer

jstat

jstatは、Javaアプリケーションの実行時間に関連する情報を観察するために使用できるツールです。

パラメータ形式

# 
jstat -<option> [-t] [-h<lines>] <vmid> [interval] [<count>]]
  • - よく使われるパラメータは以下の通りです。

    -class:ClassLoaderに関する情報が表示される
    -complier:JITコンパイルに関する情報が表示される
    -gc:GCに関連するヒープ情報が表示される
    -gcocpacity:個々の発電容量と使用量が表示される
    -gccauseガベージコレクション情報は、最後のガベージコレクションと現在のガベージコレクショントリガーの理由とともに表示される。
    -gcnew新世代情報を表示する
    -gcnewcapacity:新しい世代のサイズと使用量が表示される
    -gcold:古い世代と永続的な世代の情報を表示する
    -gcoldcapacity:古い年代のサイズを表示する
    -gcoldcapacity:古い年代のサイズを表示する
    -gcmetacapacity:メタスペースのサイズが表示される
    -gcutilゴミコレクタ情報を表示する
    -printcompilationJITコンパイルされたメソッド情報をエクスポートする
    
  • tパラメータは出力にタイムスタンプ列を追加し、プログラムの実行時間を表示します。

  • hパラメータは、プログラムがサイクル内のデータを印刷する際、テーブルヘッダ情報を表示することを意味します。これはエクセルの統計的なクラス結果の表のようなもので、表の最初の行はテーブルヘッダに相当する科目名をリストし、次の各行はデータに相当する各科目の各生徒の結果を表示します。intevalを10に設定すると、10統計ごとに、表のヘッダ情報を再エクスポートします。

  • inteval 統計間隔をミリ秒単位で指定します。
  • count 統計の数を指定します。

 共通パラメータ

  1. -クラス

    Loaded:ロードされたクラスの数を示す
    Bytesロードされたクラスの合計サイズ
    UnLoadedアンインストールされたクラスの数
    Bytesアンインストールされたクラスのサイズ
    Timeクラスのロードとアンロードに費やされた時間の合計
    
  2. -コンパイラ

    Compiled: コンパイルタスクが実行された回数を示す
    Failedコンパイルに失敗した回数を示す
    Invalidコンパイル不能の回数を示す
    Time総コンパイル時間を示す
    FileType最後のコンパイル失敗のタイプを示す
    FailedMethod最後のコンパイル失敗を示すクラス名とメソッド名
    
  3. -ジーシー

    S0Cs0のサイズ
    S1Cs1のサイズ
    S0Us0が既に使用しているスペース
    S1U: s1によって既に使用されているスペース
    ECエデン領域のサイズ
    EU: edenの未使用領域
    OC: 古いサイズ
    MUメタスペースが使用するスペース
    CCSC圧縮されたクラス空間の現在の容量
    CCSU現在圧縮されたクラス空間が使用されている
    YGCアプリケーション起動からサンプリングまでの若い世代のgc数
    YGCTアプリケーション起動からサンプリングまでにgcが若い世代に費やした時間
    FGCアプリケーション起動からサンプリングまでに旧世代のgcが使用された回数。
    FGCTアプリケーション起動から旧世代のgcをサンプリングするまでの時間
    GCTアプリケーション起動からサンプリングまでのgcの総使用時間
    
  4. -容量

    NGCMN若い世代の初期化サイズ
    NGCMXヤングジェネレーションの最大サイズ
    NGC: 若い世代の現在のキャパシティ
    S0Cs0のサイズ
    S1Cs1のサイズ
    ECeden領域のサイズ(単位:KB)
    OGCMN旧世代の初期化サイズ
    OGCMX旧世代の最大サイズ
    OGC古い世代の現在の容量
    OC: 古い時代のサイズ (KB)
    MCMNメタスペース内の初期化サイズ
    MCMXメタスペースの最大サイズ
    MCメタ空間の現在のサイズ
    CCSMN最小圧縮クラス空間サイズ
    CCSMX最大圧縮クラス・スペース・サイズ
    CCSC現在の圧縮クラス空間のサイズ
    YGCアプリケーション起動から旧世代のgcをサンプリングするまでの時間
    FGCアプリケーション起動からサンプリングまでのgcの総使用時間
    
  5. -原因

    LGCC:GC 
    GCC現在のGCの理由
    
  6. -ジーシーニュー

    TT:新しい世代のオブジェクトの年齢が古い世代のオブジェクトに昇格する
    MTT新世代のオブジェクトが旧世代のオブジェクトに昇格する最大年齢
    DSS:必要な生存領域のサイズ
    
  7. -gcnewcapacity

    S0CMXs0エリアの最大値
    
  8. -gcold

  9. -gcoldcapacity

  10. -gcmetacapacity

![](https://-../---/~---.ge) 
  1. -gcutil
![](https://-../---/~---.ge) 

jinfo

jinfoを使用すると、実行中のJavaアプリケーションの拡張パラメータを表示することができ、実行時に一部のパラメータを変更することもできます。

# 
jinfo <option> <pid>
OPTIONは
  • -flag :指定されたJava仮想マシン・パラメータを表示します。
  • -flag [+|-] : Java VMパラメータを設定するブール値
  • -flag=:指定されたJava仮想マシン・パラメーターの値を設定します。

jmap

Javaアプリケーションのヒープ・ダンプ・ファイルを生成し、ヒープ内のオブジェクト・インスタンス、ClassLoader情報、ファイナライザ・キューの統計情報を表示できます。

Javaオブジェクトの統計

#プロセスID 17340を持つJavaプロセスオブジェクトをカウントし、Dにエクスポートする。:\tmp\jmap.txt
jmap -histo 17340 > D:\tmp\jmap.txt

ファイナライザ・キューを表示するオブジェクト

#プロセスID 16596のファイナライザ・キューのオブジェクトjmap -finalizerinfo 16596を表示する。

Javaアプリケーションの現在のヒープ・スナップショットの取得

#JavaプロセスID 16596のヒープ・スナップショット・ファイルを取得し、Dにエクスポートする。:\tmp\heap.hprof jmap -dump:format=b,file=D:\tmp\heap.hprof 16596

jhat

このコマンドは、ヒープスナップショットファイルを分析し、HTTPサーバーを起動し、ブラウザーでスナップショットファイルを閲覧します。
#heap.hprofjmapを使ってエクスポートされる
jhat .\heap.hprof

ブラウザを開き、以下のURLにアクセスしてください。
http://:00/

jstack

Javaアプリケーションのスレッドスタックのエクスポートに使用できます。
#コマンド形式: -lオプションでロックに関する追加情報を表示する。
jstack [-l] 
#まずjpsでJavaプロセスのpidを取得し、次にjstackを使ってスレッドスタックファイルをDにエクスポートする。:\tmp\deadlock.txt
jstack -l 10616 > D:\tmp\deadlock.txt

検出されたデッドロックは、ファイルの下部にも表示されます。

Read next

アルゴリズムレビュー:バイナリ探索木の削除

見つけたら削除してください。 説明: アルゴリズムの時間複雑度がOで、hが木の高さであることが必要です。 概念を明確にして解析しなさい.BSTのノードを削除するには、まずそのノードを見つける必要があります。そして、そのノードを見つけた後、3つのシナリオが発生します。 1, 削除するノードの左部分木が空で、削除するノードの右部分木がそれ自身を置き換える場合。 2, 削除するノードの右サブツリーが空で、削除するノードを...

Sep 11, 2020 · 3 min read