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秒