同様の質問がここで尋ねられました。
指示に従って構築した JMC 7.1.0 を使用して、Open JDK 11.0.2 アプリケーションをプロファイリングしています。
アプリケーションは約 3 つのコアを使用しており、過剰な gc はなく、スレッドが実際に CPU を使用するネイティブ メソッド呼び出しを行っている時間のごく一部です。
デフォルトのメソッドのサンプリング間隔である 10ms を使用しています。以下を使用して、セーフポイント外のデバッグ メタ データを有効にしました。
-XX:+UnlockDiagnosticVMOptions -XX:+DebugNonSafepoints
採取されたサンプルの数は、私が予想するよりもはるかに少ないです。各サンプリング ポイントで非ネイティブ コードを実行している CPU スレッドに 1 があると保守的に仮定すると、100 サンプル/秒が予想されます。それでも、1 秒あたり 1 サンプルしか表示されません。
マシン自体は通常 50% アイドル状態であるため、サンプリング スレッドが枯渇することはありません。
サンプル数が少ない原因は何ですか?