オフラインプロファイリングを使用してスナップショットをプログラム的に保存する場合、 それらのスナップショットからデータやレポートをプログラム的に抽出する必要があるかもしれません。 JProfilerは、スナップショットからビューをエクスポートするためのものと、スナップショットを比較するためのものという、 2つの別々のコマンドライン実行ファイルを提供します。
スナップショットからビューをエクスポートする
実行ファイル bin/jpexport は、ビューのデータをさまざまな形式にエクスポートします。
-help オプションを使用して実行すると、利用可能なビュー名とビューオプションに関する情報が得られます。
簡潔さのために、以下の出力では重複するヘルプテキストは省略されています。
使用法: jpexport "スナップショットファイル" [グローバルオプション]
"ビュー名" [オプション] "出力ファイル"
"ビュー名" [オプション] "出力ファイル" ...
"snapshot file" は、次のいずれかの拡張子を持つスナップショットファイルです:
.jps, .hprof, .hpz, .phd, .jfr
「ビュー名」は、以下に一覧されているビュー名の1つです
[options] は -option=value 形式のオプションのリストです
"output file"はエクスポートの出力ファイルです
グローバルオプション:
-obfuscator=none|proguard|yguard
選択した難読化ツールに対してデオブスクエートします。デフォルトは「none」で、他の値を使用する場合はmappingFileオプションを指定
する必要があります。
-mappingfile=<file>
選択した難読化ツールのマッピングファイル。
-outputdir=<出力ディレクトリ>
出力ファイルが相対パスの場合に、ビューに使用されるベースディレクトリです。
-ignoreerrors=true|false
オプションを設定できないビューで発生するエラーを無視して、次のビューへ進みます。デフォルト値は"false"です。つまり、最初のエラーが発生
した時点でエクスポートが終了します。
-csvseparator=<区切り文字>
CSVエクスポートのフィールド区切り文字です。デフォルトは「,」です。
-bitmap=false|true
適切な場合は、メインコンテンツに対してSVGではなくビットマップ画像をエクスポートします。デフォルト値はfalseです。
利用可能なビュー名とオプション:
* TelemetryHeap, TelemetryObjects, TelemetryThroughput, TelemetryGC,
TelemetryClasses, TelemetryThreads, TelemetryCPU
?????:
-format=html|csv
エクスポートされたファイルの出力フォーマットを決定します。存在しない場合、エクスポートフォーマットは出力ファイルの拡張子から決定されます。
-minwidth=<ピクセル数>
graphの最小幅(ピクセル単位)。デフォルト値は800です。
-minheight=<ピクセル数>
graphの最小高さ(ピクセル単位)。デフォルト値は600です。
* Bookmarks, ThreadMonitor, CurrentMonitorUsage, MonitorUsageHistory
?????:
-format=html|csv
* AllObjects
?????:
-format=html|csv
-viewfilters=<カンマ区切りのリスト>
エクスポートのためのビュー・フィルターを設定します。ビュー・フィルターを設定すると、指定されたパッケージとそのサブパッケージのみがエクスポー
トされたビューに表示されます。
-viewfiltermode=startswith|endswith|contains|equals
ビューのフィルターモードを設定します。デフォルト値は「contains」です。
-viewfilteroptions=casesensitive
ビュー・フィルターのブールオプション。デフォルトでは、オプションは設定されていません。
-aggregation=class|package|component
エクスポートの集約レベルを選択します。デフォルト値はクラスです。
-expandpackages=true|false
パッケージ集約レベルでパッケージノードを展開して、含まれているクラスを表示します。デフォルト値は「false」です。他の集約レベルやcsv出
力形式では効果がありません。
* RecordedObjects
AllObjects?????????????????:
-liveness=live|gc|all
エクスポートの生存性モードを選択します。つまり、ライブオブジェクト、ガベージコレクションされたオブジェクト、またはその両方を表示するかどうか
を指定します。デフォルト値はライブオブジェクトです。
* AllocationTree
?????:
-format=html|xml
-viewfilters=<カンマ区切りのリスト>
-viewfiltermode=startswith|endswith|contains|equals
-viewfilteroptions=casesensitive
-aggregation=method|class|package|component
エクスポートの集約レベルを選択します。デフォルト値はメソッドです。
-class=<fully qualified class name>
割り当てデータを計算するクラスを指定します。空の場合、すべてのクラスの割り当てが表示されます。package
オプションと一緒に使用することはできません。
-package=<fully qualified package name>
パッケージの割り当てデータを計算するためのパッケージを指定します。空の場合、すべてのパッケージの割り当てが表示されます。パッケージ名に
.** を追加すると、パッケージが再帰的に選択されます。class オプションと一緒に使用することはできません。
-liveness=live|gc|all
* AllocationHotSpots
?????:
-format=html|csv|xml
-viewfilters=<カンマ区切りのリスト>
-viewfiltermode=startswith|endswith|contains|equals
-viewfilteroptions=casesensitive
-aggregation=method|class|package|component
-class=<fully qualified class name>
-package=<fully qualified package name>
-liveness=live|gc|all
-unprofiledclasses=separately|addtocalling
呼び出されていないクラスを別々に表示するか、呼び出し元のクラスに追加するかを選択します。デフォルト値は、呼び出されていないクラスを別々に表示
することです。
-valuesummation=self|total
ホットスポットの時間がどのように計算されるかを決定します。デフォルトは「self」です。
-expandbacktraces=true|false
HTMLまたはXML形式でバックトレースを展開します。デフォルト値は「false」です。
* ClassTracker
TelemetryHeap?????????????????:
-class
追跡されたクラス。欠落している場合、最初に追跡されたクラスがエクスポートされます。
* CallTree
?????:
-format=html|xml
-viewfilters=<カンマ区切りのリスト>
-viewfiltermode=startswith|endswith|contains|equals
-viewfilteroptions=casesensitive
-aggregation=method|class|package|component
-threadgroup=<スレッドグループの名前>
エクスポートするスレッドグループを選択します。"thread"を指定した場合、スレッドはこのスレッドグループ内のみで検索されます。それ以外の
場合は、スレッドグループ全体が表示されます。
-thread=<スレッドの名前>
エクスポートするスレッドを選択します。デフォルトでは、呼び出しツリーはすべてのスレッドに対してマージされます。
-threadstatus=all|running|waiting|blocking|netio
エクスポートのためのスレッドステータスを選択します。デフォルト値は「running」です。
* HotSpots
?????:
-format=html|csv|xml
-viewfilters=<カンマ区切りのリスト>
-viewfiltermode=startswith|endswith|contains|equals
-viewfilteroptions=casesensitive
-aggregation=method|class|package|component
-threadgroup=<スレッドグループの名前>
-thread=<スレッドの名前>
-threadstatus=all|running|waiting|blocking|netio
-expandbacktraces=true|false
-unprofiledclasses=separately|addtocalling
-valuesummation=self|total
* OutlierDetection
?????:
-format=html|csv
-threadstatus=all|running|waiting|blocking|netio
-viewfilters=<カンマ区切りのリスト>
-viewfiltermode=startswith|endswith|contains|equals
-viewfilteroptions=casesensitive
* Complexity
?????:
-format=html|csv|properties
-fit=best|constant|linear|quadratic|cubic|exponential|logarithmic|n_log_n
エクスポートするフィット。デフォルト値は「best」です。カーブフィッティングデータはCSVにエクスポートされません。
-method=<method name>
複雑性グラフをエクスポートするメソッド名です。指定されていない場合、最初のメソッドがエクスポートされます。それ以外の場合、指定されたテキスト
で始まる最初のメソッド名がエクスポートされます。
-width=<ピクセル数>
-height=<ピクセル数>
* ThreadHistory
TelemetryHeap??????????????????????
-format=html
* MonitorUsageStatistics
?????:
-format=html|csv
-type=monitors|threads|classes
エンティティを選択して、そのモニタースタティスティクスを計算します。デフォルト値は「monitors」です。
* ProbeTimeLine
ThreadHistory?????????????????:
-probeid=<id>
プローブの内部IDをエクスポートする必要があります。すべての利用可能な組み込みプローブを一覧表示し、カスタムプローブ名の説明を得るには「jp
export --listProbes」を実行してください。
* ProbeControlObjects
?????:
-probeid=<id>
-format=html|csv
* ProbeCallTree
?????:
-probeid=<id>
-format=html|xml
-viewfilters=<カンマ区切りのリスト>
-viewfiltermode=startswith|endswith|contains|equals|wildcard|regex
-viewfilteroptions=exclude,casesensitive
-aggregation=method|class|package|component
-threadgroup=<スレッドグループの名前>
-thread=<スレッドの名前>
-threadstatus=all|running|waiting|blocking|netio
エクスポートのためのスレッドステータスを選択します。デフォルト値は「all」です。
* ProbeHotSpots
ProbeCallTree??????????????????????:
-format=html|csv|xml
-expandbacktraces=true|false
* ProbeTelemetry
TelemetryHeap?????????????????:
-probeid=<id>
-telemetrygroup
テレメトリーグループの1から始まるインデックスを設定します。これは、プローブテレメトリービューの上にあるドロップダウンリストで表示されるエン
トリを指します。デフォルト値は「1」です。
* ProbeEvents
?????:
-probeid=<id>
-format=html|csv|xml
* ProbeTracker
TelemetryHeap?????????????????:
-probeid=<id>
-index=<number>
ドロップダウンリスト内のトラッキングされた要素を含む、ゼロベースのインデックスを設定します。デフォルト値は0です。
スナップショットを比較する
実行ファイル bin/jpcompare は、異なるスナップショットを比較し、
それらをHTMLまたは機械可読形式にエクスポートします。-help の出力は以下に示されており、
こちらも重複する説明は省略されています。
使用法: jpcompare "スナップショットファイル"[,"スナップショットファイル",...] [グローバルオプション]
"比較名" [オプション] "出力ファイル"
"比較名" [オプション] "出力ファイル" ...
"snapshot file" は、次のいずれかの拡張子を持つスナップショットファイルです:
.jps, .hprof, .hpz, .phd, .jfr
「比較名」は、以下に一覧されている比較名の1つです
[options] は -option=value 形式のオプションのリストです
"output file"はエクスポートの出力ファイルです
グローバルオプション:
-outputdir=<出力ディレクトリ>
出力ファイルが相対パスの場合に、比較に使用されるベースディレクトリです。
-ignoreerrors=true|false
オプションを設定できない比較で発生するエラーを無視して、次の比較へ進みます。デフォルト値は"false"です。つまり、最初のエラーが発生した
時点でエクスポートが終了します。
-csvseparator=<区切り文字>
CSVエクスポートのフィールド区切り文字です。デフォルトは「,」です。
-bitmap=false|true
適切な場合は、メインコンテンツに対してSVGではなくビットマップ画像をエクスポートします。デフォルト値はfalseです。
-sortbytime=false|true
指定されたスナップショットファイルを変更時間でソートします。デフォルト値はfalseです。
-listfile=<filename>
スナップショットファイルのパスを含むファイルを読み込みます。1行につき1つのスナップショットファイルです。
利用可能な比較名とオプション:
* Objects
?????:
-format=html|csv
エクスポートされたファイルの出力フォーマットを決定します。存在しない場合、エクスポートフォーマットは出力ファイルの拡張子から決定されます。
-viewfilters=<カンマ区切りのリスト>
エクスポートのためのビュー・フィルターを設定します。ビュー・フィルターを設定すると、指定されたパッケージとそのサブパッケージのみがエクスポー
トされたビューに表示されます。
-viewfiltermode=startswith|endswith|contains|equals
ビューのフィルターモードを設定します。デフォルト値は「contains」です。
-viewfilteroptions=casesensitive
ビュー・フィルターのブールオプション。デフォルトでは、オプションは設定されていません。
-aggregation=class|package|component
エクスポートの集約レベルを選択します。デフォルト値はクラスです。
-liveness=live|gc|all
エクスポートの生存性モードを選択します。つまり、ライブオブジェクト、ガベージコレクションされたオブジェクト、またはその両方を表示するかどうか
を指定します。デフォルト値はライブオブジェクトです。
-objects=recorded|heapwalker|all
記録されたオブジェクト、ヒープウォーカー内のオブジェクト、またはすべてのオブジェクトダンプからのオブジェクト数を比較します。デフォルトは
.jps ファイルの場合は記録されたオブジェクトで、HPROF/PHD ファイルの場合はヒープウォーカーです。
-dumpselection=first|last|label
比較計算に使用されるすべてのオブジェクトダンプ。デフォルトは最後の値です。
-label
dumpselection が 'label' に設定されている場合、比較を計算するためのラベルの名前です。
* AllocationHotSpots
?????:
-format=html|csv
-viewfilters=<カンマ区切りのリスト>
-viewfiltermode=startswith|endswith|contains|equals
-viewfilteroptions=casesensitive
-aggregation=method|class|package|component
エクスポートの集約レベルを選択します。デフォルト値はメソッドです。
-liveness=live|gc|all
-unprofiledclasses=separately|addtocalling
呼び出されていないクラスを別々に表示するか、呼び出し元のクラスに追加するかを選択します。デフォルト値は、呼び出されていないクラスを別々に表示
することです。
-valuesummation=self|total
ホットスポットの時間がどのように計算されるかを決定します。デフォルトは「self」です。
-classselection
特定のクラスまたはパッケージの比較を計算します。パッケージは、単一のパッケージには「.*」、再帰的なパッケージには「.**」を追加して指定し
ます。 パッケージをワイルドカード付きで指定してください。例: 'java.awt.*'。
* AllocationTree
?????:
-format=html|xml
-viewfilters=<カンマ区切りのリスト>
-viewfiltermode=startswith|endswith|contains|equals
-viewfilteroptions=casesensitive
-aggregation=method|class|package|component
-liveness=live|gc|all
-classselection
* HotSpots
?????:
-format=html|csv
-viewfilters=<カンマ区切りのリスト>
-viewfiltermode=startswith|endswith|contains|equals
-viewfilteroptions=casesensitive
-firstthreadselection
特定のスレッドまたはスレッドグループの比較を計算します。 スレッドグループを 'group.*'
のように指定し、特定のスレッドグループ内のスレッドを 'group.thread'
のように指定します。スレッド名のドットはバックスラッシュでエスケープしてください。
-secondthreadselection
特定のスレッドまたはスレッドグループの比較を計算します。 メッセージは 'firstthreadselection'
が設定されている場合にのみ利用可能です。空の場合、'firstthreadselection' と同じ値が使用されます。 スレッドグループを
'group.*' のように指定し、特定のスレッドグループ内のスレッドを 'group.thread'
のように指定します。スレッド名のドットはバックスラッシュでエスケープしてください。
-threadstatus=all|running|waiting|blocking|netio
エクスポートのためのスレッドステータスを選択します。デフォルト値は「running」です。
-aggregation=method|class|package|component
-differencecalculation=total|average
呼び出し回数の差分計算方法を選択します。デフォルト値は総回数です。
-unprofiledclasses=separately|addtocalling
-valuesummation=self|total
* CallTree
?????:
-format=html|xml
-viewfilters=<カンマ区切りのリスト>
-viewfiltermode=startswith|endswith|contains|equals
-viewfilteroptions=casesensitive
-firstthreadselection
-secondthreadselection
-threadstatus=all|running|waiting|blocking|netio
-aggregation=method|class|package|component
-differencecalculation=total|average
* TelemetryHeap
?????:
-format=html|csv
-minwidth=<ピクセル数>
graphの最小幅(ピクセル単位)。デフォルト値は800です。
-minheight=<ピクセル数>
graphの最小高さ(ピクセル単位)。デフォルト値は600です。
-valuetype=current|maximum|bookmark
各スナップショットに対して計算される値のタイプ。デフォルトは現在の値です。
-bookmarkname
valuetype が 'bookmark' に設定されている場合、値を計算するためのブックマークの名前です。
-measurements=maximum,free,used
比較グラフに表示される測定値。複数の値はカンマで連結します。デフォルト値は「used」です。
-memorytype=heap|nonheap
メモリの種類を分析する必要があります。デフォルトは「heap」です。
-memorypool
特別なメモリプールを分析する場合は、このパラメータでその名前を指定できます。デフォルトは空で、つまり特別なメモリプールはありません。
* TelemetryObjects
?????:
-format=html|csv
-minwidth=<ピクセル数>
-minheight=<ピクセル数>
-valuetype=current|maximum|bookmark
-bookmarkname
-measurements=total,nonarrays,arrays
比較グラフに表示される測定値。複数の値はカンマで連結します。デフォルト値は「total」です。
* TelemetryClasses
TelemetryObjects??????????????????????
-measurements=total,filtered,unfiltered
* TelemetryThreads
TelemetryObjects??????????????????????
-measurements=total,runnable,blocked,netio,waiting
* ProbeHotSpots
?????:
-format=html|csv
-viewfilters=<カンマ区切りのリスト>
-viewfiltermode=startswith|endswith|contains|equals|wildcard|regex
-viewfilteroptions=exclude,casesensitive
-firstthreadselection
-secondthreadselection
-threadstatus=all|running|waiting|blocking|netio
-aggregation=method|class|package|component
-differencecalculation=total|average
-probeid=<id>
プローブの内部IDをエクスポートする必要があります。すべての利用可能な組み込みプローブを一覧表示し、カスタムプローブ名の説明を得るには「jp
export --listProbes」を実行してください。
* ProbeCallTree
ProbeHotSpots??????????????????????
-format=html|xml
* ProbeTelemetry
TelemetryObjects??????????????????????:
-measurements
計測値を示すテレメトリーグループ内の1ベースのインデックスです。複数の値をカンマで連結します(例: "1,
2")。デフォルト値はすべての計測値を表示します。
-probeid=<id>
-telemetrygroup
テレメトリーグループの1から始まるインデックスを設定します。これは、プローブテレメトリービューの上にあるドロップダウンリストで表示されるエン
トリを指します。デフォルト値は「1」です。
自動出力形式
ほとんどのビューと比較は、複数の出力形式をサポートしています。デフォルトでは、出力形式は 出力ファイルの拡張子から推測されます:
-
.html
ビューまたは比較はHTMLファイルとしてエクスポートされます。HTMLページで使用される画像を含む ディレクトリjprofiler_imagesが作成されます。 -
.csv
データはCSVデータとしてエクスポートされ、最初の行には列名が含まれます。
Microsoft Excelを使用する場合、CSVは安定した形式ではありません。Windows上のMicrosoft Excelは 地域設定からセパレータ文字を取得します。JProfilerは、小数点セパレータとしてカンマを使用するロケールでは セミコロンをセパレータとして使用し、小数点セパレータとしてドットを使用するロケールではカンマを使用します。 CSVセパレータ文字を上書きする必要がある場合は、グローバルオプション
csvseparatorを設定することで 可能です。 -
.xml
データはXMLとしてエクスポートされます。データ形式は自己記述的です。
異なる拡張子を使用したい場合は、format オプションを使用して
出力形式の選択を上書きすることができます。
スナップショットの分析
生成されたスナップショットにヒープダンプが含まれている場合は、 bin/jpanalyze
実行ファイルを使用して、ヒープダンプ分析を事前に準備することができます。
その後、JProfilerのGUIでスナップショットを開くのが非常に速くなります。ツールの使用情報は以下に示されています:
使用法: jpanalyze [オプション] "スナップショットファイル" ["スナップショットファイル" ...]
"snapshot file" は、次のいずれかの拡張子を持つスナップショットファイルです:
.jps, .hprof, .hpz, .phd, .jfr
[options] は -option=value 形式のオプションのリストです
オプション:
-obfuscator=none|proguard|yguard
選択した難読化ツールに対してデオブスクエートします。デフォルトは「none」で、他の値を使用する場合はmappingFileオプションを指定
する必要があります。
-mappingfile=<file>
選択した難読化ツールのマッピングファイル。
-removeunreferenced=true|false
参照されていないオブジェクトまたは弱参照されているオブジェクトを削除する必要がある場合。
-retained=true|false
保持サイズを計算します(最大のオブジェクト)。removeunreferencedがtrueに設定されます。
-retainsoft=true|false
参照されていないオブジェクトが削除された場合、ソフト参照を保持するかどうかを指定します。
-retainweak=true|false
参照されていないオブジェクトが削除された場合、弱い参照を保持するかどうかを指定します。
-retainphantom=true|false
参照されていないオブジェクトが削除された場合、ファントム参照を保持するかどうかを指定します。
-retainfinalizer=true|false
参照されていないオブジェクトが削除された場合、ファイナライザの参照を保持するかどうかを指定します。
removeUnreferenced、retained、およびすべてのretain*
コマンドラインオプションは、ヒープウォーカーオプションダイアログのオプションに対応しています。