http://itpro.nikkeibp.co.jp/article/COLUMN/20061102/252525/
http://apis.jpn.ph/fswiki/wiki.cgi?page=Java%2Fhprof%28jvmpi%29
hprof
とりあえず使ってみる
java -agentlib:hprof -jar Java2Demo.jar
デフォルトではプロファイル結果はjava.hprof.txt になる。
結果を見やすく
java -agentlib:hprof=format=bJava2Demo.jar
format=b で結果をバイナリ化する。結果ファイルはjava.hprofになる。
jhat java.hprof
で結果を解析してwebブラウザで見れるようになる。
http://localhost:7000
で見れる。
ただし、今のところヒープしか対応していないみたい。
cpuに関する情報は、テキストで見るしかないようだ。
結果ファイルの見方
ヒーププロファイリング
SITES BEGIN から SITES END の部分が、使用メモリの統計情報で、メモリの使用量順に出力される。各カラム内容は以下の通り。
| タイトル | 意味 |
|---|---|
| rank | 消費メモリの順位 |
| percent self | 消費メモリのパーセンテージ |
| percent accum | 消費メモリの累積パーセンテージ(上位rankのpercent selfとの和) |
| live bytes | ライブオブジェクト(GCされていないオブジェクト)の消費バイト数 |
| live objs | ライブオブジェクトのオブジェクト数 |
| alloc'ed bytes | アロケートされたオブジェクト(GCされたオブジェクトを含む)の消費バイト数 |
| alloc'ed objs | アロケートされたオブジェクトのオブジェクト数 |
| stack trace | 対応するトレース番号 |
| class name | クラス名 |
クラス名の部分に記述されている [C や [I といったクラス名は配列を表す。
| クラス名 | 意味 |
|---|---|
| [Lクラス名 | オブジェクトの配列 |
| [Z | boolean型の配列 |
| [B | byte型の配列 |
| [C | char型の配列 |
| [S | short型の配列 |
| [I | int型の配列 |
| [J | long型の配列 |
| [F | float型の配列 |
| [D | double型の配列 |
CPU使用率プロファイリング
CPU TIME (ms) BEGIN から CPU TIME (ms) END の部分が、CPU使用率の情報で、使用率順に出力される。各カラム内容は以下の通り。
| タイトル | 意味 |
|---|---|
| rank | CPU時間の順位 |
| self | CPU時間のパーセンテージ |
| accum | CPU使用時間の累積パーセンテージ(上位rankのselfとの和) |
| count | ヒットしたサンプリング数(samples指定)/メソッドのコール回数(times指定) |
| trace | 対応するトレース番号 |
| method | メソッド名 |
オプション
| オプション名前と値 | オプションの説明 | デフォルト |
|---|---|---|
| heap=dump|sites|all | ヒープのプロファイリング | all |
| cpu=samples|times|old | CPU 使用率のプロファイル | off |
| monitor=y|n | モニターの競合 | n |
| format=a|b | ASCII またはバイナリ形式 | a |
| file=name | データをファイルに書き出す | java.hprof[.txt] |
| net=host:port | データをソケット経由で送信 | ファイルに書き出す |
| depth=size | スタックトレースの深さ | 4 |
| cutoff=value | 出力のカットオフポイント | 0.0001 |
| lineno=y|n | トレースに行番号を出力するか | y |
| thread=y|n | トレースにスレッドを出力するか | n |
| doe=y|n | 終了時にダンプするか | y |
| gc_okay=y|n | GC okay during sampling | y |
ヒーププロファイリングのオプション値
| 引数 | 動作 |
|---|---|
| sites | 使用メモリの統計情報を出力 |
| dump | ヒープのダンプを出力 |
| all | sitesとdumpの両方を出力 |
CPU使用率プロファイルのオプション値
| 引数 | 動作 |
|---|---|
| samples | 定期的にサンプリングし、アクティブなスレッド(メソッド)をカウントする |
| times | メソッドのIN/OUTを監視し、メソッドのコール回数をカウントする |
| old | timesと同様。出力形式が、旧hprofフォーマットとなる |
[カテゴリ: プログラミング言語 > Java]
[通知用URL]
Tweet
最終更新時間:2010年11月15日 21時52分34秒