非同期プロファイラー
非同期プロファイラー(英語)は、アプリケーションの JVM レベルのパラメーターを監視して、アプリケーションの実行方法と、メモリと CPU リソースの割り当て方法を正確に把握します。このデータは、パフォーマンスの問題とボトルネックを見つけて解決できます。
非同期プロファイラーでは、スタックをサンプリングするためにスレッドが安全なポイントにある必要はありません。つまり、セーフポイントバイアスの問題を回避できます。さらに、プロファイラーは Flame グラフ(英語)サポートを備えており、スタックトレースを視覚化できます。

Linux でプロファイラーの使用を開始する前に、カーネルオプションを調整します。macOS では、プロファイラーはそのまま使用できます。
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 セッションにのみ影響します。システムを再起動して設定を保持するには、次のコマンドを実行します。
プロファイラ―の構成
IntelliJ IDEA には、事前定義された 2 つの非同期プロファイラー構成があります。
にある CPU プロファイラーとメモリ割り当てプロファイラーです。
これらの構成は、最も正確な結果を提供するように調整されているため、変更する必要はありません。ただし、設定の値は変更できます。
プロファイリング構成を変更する
設定 / 環境設定ダイアログ Ctrl+Alt+S で、 を選択します。
定義済みの CPU またはメモリのプロファイリング構成のいずれかを選択するか、
をクリックしてテンプレート構成をコピーします。
エージェントのオプションフィールドの値を変更し、変更を適用します。詳細については、GitHub の非同期プロファイラー(英語)を参照してください。
関連ページ:

プロファイリングツール
プロファイリングツールは、ほとんどの場合にどのメソッドが実行されるかを調べるのに役立ちます。それらは、最も高負荷なメソッドを見つけ、それらの動作を正確に理解できます。IntelliJ IDEA は、次のプロファイリングツールと統合されています。非同期プロファイラ:Linux および macOS 向け...

Java フライトレコーダー
Java フライトレコーダー(JFR)は、アプリケーションの実行中に Java 仮想マシン内の特定の瞬間のイベント(データ)に関する情報を収集する監視ツールです。Java Flight Recorder は、次の JDK ビルドでネイティブにサポートされています。Oracle JDK 8-10:VM...