Hatena::Grouparaistudy

czk-htnの日記

2008-02-28

[] NetBeans6.1 Profiler 06:42

iReportの遅さが気になってご飯がのどを通らないのでプロファイラで調べてみることにした。NetBeansには標準でグラフィカルなプロファイラがついているようなので試してみる。

プロファイラの調整手順

たぶん最初に1回だけ実行してあげればいいんだと思う

  1. NetBeans6.1を起動する
  2. [プロファイル]-[拡張コマンド]-[プロファイラの調整を実行]
  3. [調整するプラットフォーム]で[JDK1.5(デフォルト)]を選択し[了解]
  4. しばらくすると[調整に成功しました]とかいうので[了解]

プロファイラの実行手順

  1. [プロファイル]-[プロファイラを接続]
  2. [接続ウィザード]が表示されるので[ターゲットの種類]で[アプリケーション]を選択する
    1. [接続方法]は[リモート]、[接続呼び出し]は[直接]
    2. [次へ]
  3. [接続設定を確認]されるので[次へ]
  4. [Javaプロットフォームを選択]しろといわれるので[Java SE 5.0_04以降]を選択
    1. 画面に監視したいアプリケーションの起動オプションが説明されているので[-agentpath〜]の文字列をコピーしておく
    2. いったんNetBeansの画面はこのままほうっておく
  5. iReportの起動シェルを修正して起動オプションに文字列を追加する
% vi ~/Applications/iReport-2.0.4/bin/startup.sh
PROFILER=-agentpath:/tmp/NBProfiler30682.link/deployed/jdk15/mac/libprofilerinterface.jnilib=/tmp/NBProfiler30682.link,5140
java -classpath "$IREPORT_CLASSPATH:$CLASSPATH" $PROFILER -Direport.home=$IREPORT_HOME -Djava.security.policy=$IREPORT_HOME/policy.all it.businesslogic.ireport.gui.MainFrame "$@"
  1. 起動する
    1. プロファイラが接続するまでアプリケーションは待機状態になる
% ~/Applications/iReport-2.0.4/iReport.sh
Profiler Agent: Initializing...
Profiler Agent: Options: >/tmp/NBProfiler30682.link,5140<
Profiler Agent: Initialized succesfully
Profiler Agent: Waiting for connection on port 5140 (Protocol version: 8)
  1. NetBeansに戻り[接続ウィザード]で[完了]する
  2. [プロファイルを接続]の右下にある[接続]をクリックすると待機していたアプリケーションが動きだしプロファイルが始まる

プロファイルセッション

プロファイルセッションていうのを切り替えると見方を変えられる

監視
どのスレッドが実行中とか待機中とか
CPU
どのクラスのどのメソッドが何回呼ばれてどれくらい時間がかかったか
メモリ
どのクラスのインスタンスがいくつ生成されて、どれくらいメモリを占めているか
  1. [プロファイル]-[プロファイルセッションを変更]
  2. 画面の左でタイプが選択できるので好きなのを選ぶ
  3. 接続するアプリケーション設定はさっき設定したものがそのまま使われるようだ
  4. [了解]を選ぶとそのタイプでの解析が始まる

CPU解析の場合はプロファイラ接続時に選んでおかないと[ライブ結果]画面にあらわれてくれなかったので注意

プロファイルの終了

  • [プロファイル]-[切り離す]

監視アプリケーションが終了します


でiReportの遅さの原因は?

正直よくわからんがメモリでなくapple.awt.*に問題があるんじゃないかと疑ってる。

f:id:czk-htn:20080228071031p:image

参考

トラックバック - http://araistudy.g.hatena.ne.jp/czk-htn/20080228