LoginSignup
9
3

More than 3 years have passed since last update.

IntelliJ IDEAのプロファイラを使ってみた

Last updated at Posted at 2019-12-15

GMOアドマーケティングのT.Oです。

IntelliJ IDEA Ultimateでプロファイラを使ってみましたので利用手順についてご紹介します。
お手軽に使用できます:grinning:

●前提
開発環境としてmac版のIntelliJ IDEA Ultimate 2019.3を利用します。
注1) IntelliJのプロファイラはUltimate版のみで使用可能です
注2) 現時点ではプロファイラの機能はtomcatなどのアプリケーションサーバーには使えません

1.プロファイラ機能の有効化

IntelliJのメニューから「Preference→Build,Execution,Deployment→Profilers→Java Profiler」を選択します。「+」ボタンを押して「CPU Profiler」, 「Allocation Profiler」を追加します。
profiler_p1.png

プロファイラを実行するためのボタンが追加されます。
profiler_p2.png

2.プロファイラを使う

2.1. CPUプロファイラ

プロファイラを実行するボタンのうち、「Run 'xxxxx' with CPU Profiler」を選択します。プログラムが実行された後に、画面の「Profiler」タブを選択するとプロファイラーツールウィンドウが表示されます。収集されたデータがフレームグラフ、コールツリー、メソッドリストの3つのタブに表示されます。

2.1.1. フレームグラフ

CPUの消費時間の割合に比例した幅で呼び出されたスタックのフレームが表示されます。オレンジの部分がプログラムで記述された部分の呼び出しによって消費されているところ、ブルーの部分がコンパイル時間などで消費されているところになっているようです。
profiler_cpu_p1.png
消費時間の割合が多いところを調査したい場合は、フレームを選択した状態でメニューを表示して「Jump To Source」を選ぶとそのフレームの部分に該当するプログラムソースに移動することができます。
profiler_cpu_p1-2.png

2.1.2. コールツリー

プログラムの呼び出しスタックに関する情報(メソッド名、合計CPU消費時間の割合など)が表示されます。
左端の矢印は階層表示になっていて、選択するとより詳細に確認することができます。
profiler_cpu_p2.png

2.1.3. メソッドリスト

実行されたメソッドが累積のCPU消費時間の割合の多い順に表示されます。それぞれのメソッドを選択した状態で下部の「Back Traces」を選ぶと、呼び出し元になっているメソッドを確認することができます。
profiler_cpu_p3.png

2.2. アロケーションプロファイラ

プロファイラを実行するボタンのうち、「Run 'xxxxx' with Allocation Profiler」を選択します。プログラムが実行された後に、画面の「Profiler」タブを選択するとプロファイラーツールウィンドウが表示されます。
収集されたデータがフレームグラフ、コールツリー、メソッドリストの3つのタブに表示されます。

2.2.1. フレームグラフ

メモリ消費の割合に比例した幅で呼び出されたスタックのフレームが表示されます。メモリ消費量が多いところを調査したい場合は、フレームを選択した状態でメニューを表示してメニューから「Jump To Source」を選ぶとそのフレームの部分に該当するプログラムソースに移動することができます。
profiler_allocation_p1.png

2.2.2. コールツリー

プログラムの呼び出しスタックに関する情報(メソッド名、合計メモリ消費量の割合など)が表示されます。
profiler_allocation_p2.png
左端の矢印は階層表示になっていて、選択するとより詳細に確認することができます。
profiler_allocation_p3.png

2.2.3. メソッドリスト

実行されたメソッドが累積のメモリ量で多い順に表示されます。それぞれのメソッドを選択した状態で下部の「Back Traces」を選ぶと、呼び出し元になっているメソッドを確認することができます。
profiler_allocation_p4.png

参考

執筆にあたり以下を参考にさせていただきました。
プロファイリング・ツール - 公式ヘルプ | IntelliJ IDEA

明日は、@CodeDiggerMさんによる「機械学習で欠損値の対応法」です。
引き続き、GMOアドマーケティング Advent Calendar 2019をお楽しみください!

9
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
3