カスタムプロファイラー構成
CPU および割り当てプロファイリングの場合、IntelliJ IDEA は次のプロファイラーとの統合を提供します。
Java Flight Recorder – JDK の一部として提供される標準のプロファイリングツール。
非同期プロファイラー – ネイティブコールおよびメモリ割り当てデータも収集できる非常に正確なプロファイラー。
デフォルトでは、IntelliJ IDEA は両方のプロファイラーを並行して実行して、最も正確な結果を提供します。サポートされているプロファイラーを個別に使用することもできますが、ほとんどのシナリオでは、すぐに使用できる組み合わせ構成の方が適しています。このアプローチでは、両方のプロファイラーの利点を活用し、非常に特殊な要件がない限り、セットアップを一切不要にします。
非同期プロファイラーおよび Java Flight Recorder 構成では、これらのツールを個別に実行し、特定の要件に従って微調整することができます。このトピックでは、これらの構成と環境をセットアップする方法について説明します。
別のプロファイラー構成を作成する
に移動します。
新規構成の追加をクリックして、プロファイラーを選択します。
必要に応じてプロファイラーオプションを変更します。
オプションの意味と目的については、それぞれ非同期プロファイラーと Java Flight Recorder の章を参照してください。
非同期プロファイラー
Windows および macOS では、プロファイラーはそのまま使用できます。Linux を使用している場合は、プロファイリングを開始する前にカーネルオプションを調整する必要があります。
Linux でのカーネルオプションの調整
perf_event_paranoid を調整します。このオプションは、非 root ユーザーによるパフォーマンスイベントデータの使用を制御します。
プロファイラーがルート権限なしでパフォーマンス情報を収集できるようにするには、値を 2 未満に設定します。
sudo sh -c 'echo 1 >/proc/sys/kernel/perf_event_paranoid'kptr_restrict を調整します。このオプションは、カーネルアドレスの公開に関する制限を設定します。
カーネルシンボルを適切に解決するには、値を 0 に設定して、kptr_restrict によって提供される保護を無効にします。
sudo sh -c 'echo 0 >/proc/sys/kernel/kptr_restrict'
デフォルトでは、これらの変更は現在の OS セッションにのみ影響します。システムを再起動して設定を保持するには、次のコマンドを実行します。
構成オプション
オプション | 説明 |
---|---|
エージェントオプション | エージェントに渡されるオプション。これらは、たとえば、壁掛け監視のプロファイリングを有効にしたり、サンプリング間隔を調整したりするために使用できます。 |
エージェント | プロファイリングに使用されるエージェント。 |
Java Flight Recorder
Java Flight Recorder は、Windows、Linux、macOS で使用できます。次の JDK ビルドでネイティブにサポートされています :
Oracle JDK 8-10:
UnlockCommercialFeatures
VM オプションが有効になっている場合Oracle JDK11 以降
OpenJDK11 以降
Oracle の JFR を有効にする JDK 8-11
メインメニューで
に移動し、左側のリストから JFR で分析する実行構成を選択します。VM オプションフィールドに、次の行を追加します:
-XX:+UnlockCommercialFeatures
変更を適用し、ダイアログを閉じます。
![JFR の有効化 Enabling JFR](https://resources.jetbrains.com/help/img/idea/2024.1/unlock-jfr.png)
JFR 構成
デフォルトとプロファイルの 2 つのプリインストール構成があります。デフォルト構成のオーバーヘッドは低い(約 1%)ため、継続的なプロファイリングに適しています。プロファイル構成には約 2% のオーバーヘッドがあり、より詳細なアプリケーションプロファイリングに使用できます。
これらの構成は、ほとんどのユースケースをカバーしています。
で最適な構成を選択できます。事前定義された構成がニーズを満たさない場合は、Java Mission Control を使用して独自の設定を作成およびアップロードできます。
カスタム JFR 構成を作成する (オプション)
JAVA_HOME/bin/jmc または https://jdk.java.net/jmc/(英語) からダウンロードできる Java Mission Control を実行します。
Java Mission Control のメインメニューから、
を選択します。右側のパネルでファイルのインポートをクリックし、.jfc 形式の事前インストール済み構成のいずれかを選択します。
Java 10 以前の場合: JAVA_HOME/jre/lib/jfr/
Java 11 以降の場合: JAVA_HOME/Contents/Home/lib/jfr/
OK をクリックします。
を選択し、必要な設定を変更して、フライト記録テンプレートマネージャーダイアログで、ファイルのエクスポートをクリックします。
新しい設定ファイルに別の名前を指定し、必要に応じてその場所を変更します。保存をクリックします。
カスタム設定の構成の詳細については、「テンプレートを使用して記録データを制御する(英語)」を参照してください。
IDE にカスタム構成をロードする (オプション)
設定ダイアログ(Ctrl+Alt+S)で、 を選択します。
をクリックして、カスタム設定をロードする Java Flight Recorder プロファイリング構成を選択するか、新しい構成を作成します。
プロファイリング設定領域で、カスタム設定ファイルオプションを選択し、
をクリックします。
カスタム設定ファイルへのパスを指定し、開くをクリックします。
変更を適用し、ダイアログを閉じます。
関連ページ:
![](https://resources.jetbrains.com/help/img/idea/2024.1/compare_snapshots_0.png)
プロファイラーのスナップショットを比較する
IntelliJ IDEA を使用すると、プロファイラーのスナップショットを比較できます。これは、コードの特定の変更がパフォーマンスにどのように影響するか、同じコードが異なるランタイムでどのように実行されるかを確認するのに役立つ場合があります。比較のために 2 つのスナップショットを開く比較する 2 つのスナップショットを開き、そのうちの 1 つを選択します。ツールバーの右側で、基準と比較をクリックし、他のスナップショットを選択します。比較のために、フレームグラフ、呼び出しツリー、メソッドリスト...
![](https://resources.jetbrains.com/help/img/idea/2024.1/capture-hprof-from-run.png)
メモリスナップショットを作成して開く
ヒープダンプは、メモリ関連の問題を特定できます。ヒープを分析してメモリリークを見つけ、大量のメモリリソースを使用するコードを見つけることができます。IntelliJ IDEA を使用すると、IntelliJ IDEA またはその他の外部ツールで取得されたかどうかに関係なく、.hprof スナップショットを分析できます。メモリスナップショットを作成するプロセスがすでに実行またはサービスツールウィンドウで実行されている場合は、をクリックします。任意のプロセスの場合: プロファイラーツールウィンドウ ()...