
Java開発の問題解決を助ける(2)
プロファイラでメモリリークとパフォーマンス問題を解決
| プロファイラでパフォーマンスの問題を解決 |
では実際にプロファイラを使用してパフォーマンスの問題を解決してみましょう。先ほどメモリリークを解決するために使用したサンプルプログラム(sample.zip)を使用します。設定方法は前述の「開発環境とプロファイラの準備」を参照してください。
■時間のかかっている処理を特定する
メニューの[Profile]から
[Profile
Main Project]を選び、プロファイル対象のメインクラスを選択してください。プロファイリングタスクを選択する画面が出てきますが、今度は[Analyze
Performance]を使用します。プログラムのどの部分に原因があるかがよく分かっていない場合にはプログラム全体を検査の対象としますので、デフォルトで選択されている[Entire
Application]が選択されていることを確認して実行します。
![]() |
| 画面6 「Entire Application」が選択されていることを確認して実行 |
プロファイル結果は、メモリリークを探したときと同じようにメニューの[Window]にある[Profiling]メニューの
[Live
Results]を選択することで取得することができます。Live Resultsでは各メソッドの呼び出し回数や合計処理時間が表示されています。これにより、どの部分で特に時間がかかっているかを把握することができます。
![]() |
| 画面7 メソッドごとの合計処理時間・呼び出し回数の一覧 |
プロファイル結果が表示されている画面にあるアイコン
[Take
Snapshot of Collected Results]をクリックしてスナップショットを取得すると、それぞれのメソッドが呼び出されたスタックトレースを取得することができます。また、メソッドを選択して右クリックメニューから[Show
Back Traces]を選べばそのメソッドを使用している呼び出し元をたどることもできます。
![]() |
| 画面8 メソッドの呼び出し元一覧 |
このように時間のかかっている処理が特定できることによって、処理をチューニングしたり、呼び出し元をたどることで修正の影響度を判断することができます。今回のサンプルプログラムでは、WordCountクラスのgetCountメソッド33行目にわざとパフォーマンスボトルネックとなるコードを書いていました。
リスト WordCount.java
|
このようにプロファイラ・ツールはメモリリーク問題の解決や、パフォーマンスボトルネック問題の解決に大きな力となります。プロファイラ・ツールは今回紹介した以外にもさまざまな統計情報が取得できます。このような情報の読み方や使い方は実際に使って手を動かしてみないとなかなか身に付かないものです。実際に問題が発生したときに使いこなせるようにぜひ手を動かしてマスターしてください。
| 3/3 |
|
INDEX |
||
| 第2回 Java開発の問題解決を助ける | ||
| Page1 メモリリーク(メモリの無駄遣い)を探せ! プロファイラを使ってみよう |
||
| Page2 メモリの無駄を作っている部分を特定する パフォーマンスボトルネックを探せ! |
||
| Page3 プロファイラでパフォーマンスの問題を解決 |
||
Java開発の問題解決を助ける バックナンバー
- 第1回 デバックでのブレークポイント活用
- 第2回 プロファイラでメモリリークとパフォーマンス問題を解決
- 最終回 チームと戦略で問題解決力を高める
TechTargetジャパン
- Scalaのパッケージ、アクセス修飾子、オブジェクト継承 (2012/5/22)
インポート、パッケージオブジェクト、抽象クラス/抽象メソッド、オーバーライド、final、シールドクラスなども - 基幹系システムでCloud SQLは使えるか試してみた (2012/5/17)
サンプルとしてMRPシステムを作成して動かし、「再帰呼び出し」などのパフォーマンスを測定して検証してみます - アジャイル管理ツール9選+Pivotal Tracker入門 (2012/5/14)
群雄割拠のアジャイルプロジェクト管理ツールを9つ紹介し、特に注目を集めているPivotal Trackerの基本的な使い方を解説します - サーバサイドJSやJavaでWebアプリが作れるXPages (2012/5/11)
Notes/Dominoの資産をサーバサイドJavaScriptやJavaで操作し、HTMLやJavaScript、CSSをUIにできる技術を紹介
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -



