IntelliJ IDEA 2021.1 ヘルプ

非同期プロファイラー

非同期プロファイラー(英語)は、アプリケーションの JVM レベルのパラメーターを監視して、アプリケーションの実行方法と、メモリと CPU リソースの割り当て方法を正確に把握します。このデータは、パフォーマンスの問題とボトルネックを見つけて解決できます。

非同期プロファイラーでは、スタックをサンプリングするためにスレッドが安全なポイントにある必要はありません。つまり、セーフポイントバイアスの問題を回避できます。さらに、プロファイラーは Flame グラフ(英語)サポートを備えており、スタックトレースを視覚化できます。

Block details shown in the flame graph

Linux でプロファイラーの使用を開始する前に、カーネルオプションを調整します。macOS では、プロファイラーはそのまま使用できます。

Linux でのカーネルオプションの調整

  1. perf_event_paranoid を調整します。このオプションは、非 root ユーザーによるパフォーマンスイベントデータの使用を制御します。

    プロファイラーがルート権限なしでパフォーマンス情報を収集できるようにするには、値を 2 未満に設定します。

    sudo sh -c 'echo 1 >/proc/sys/kernel/perf_event_paranoid'
  2. kptr_restrict を調整します。このオプションは、カーネルアドレスの公開に関する制限を設定します。

    カーネルシンボルを適切に解決するには、値を 0 に設定して、kptr_restrict によって提供される保護を無効にします。

    sudo sh -c 'echo 0 >/proc/sys/kernel/kptr_restrict'

デフォルトでは、これらの変更は現在の OS セッションにのみ影響します。システムを再起動して設定を保持するには、次のコマンドを実行します。

sudo sh -c 'echo kernel.perf_event_paranoid=1 >> /etc/sysctl.d/99-perf.conf' sudo sh -c 'echo kernel.kptr_restrict=0 >> /etc/sysctl.d/99-perf.conf' sudo sh -c 'sysctl --system'

プロファイラーの構成

IntelliJ IDEA には、事前定義された 2 つの非同期プロファイラー構成があります。設定 / 環境設定 | ビルド、実行、デプロイ | Java プロファイラーにある CPU プロファイラーとメモリ割り当てプロファイラーです。

Configuring CPU profiler configuration

これらの構成は、最も正確な結果を提供するように調整されているため、変更する必要はありません。ただし、設定の値は変更できます。

プロファイリング構成を変更する

  1. 設定 / 環境設定ダイアログ Ctrl+Alt+S で、ビルド、実行、デプロイ | Java プロファイラーを選択します。

  2. 定義済みの CPU またはメモリのプロファイリング構成のいずれかを選択するか、the Add button をクリックしてテンプレート構成をコピーします。

  3. エージェントのオプションフィールドの値を変更し、変更を適用します。詳細については、GitHub の非同期プロファイラー(英語)を参照してください。