4

同様の質問がここで尋ねられました。

指示に従って構築した JMC 7.1.0 を使用して、Open JDK 11.0.2 アプリケーションをプロファイリングしています。

アプリケーションは約 3 つのコアを使用しており、過剰な gc はなく、スレッドが実際に CPU を使用するネイティブ メソッド呼び出しを行っている時間のごく一部です。

デフォルトのメソッドのサンプリング間隔である 10ms を使用しています。以下を使用して、セーフポイント外のデバッグ メタ データを有効にしました。

-XX:+UnlockDiagnosticVMOptions -XX:+DebugNonSafepoints

採取されたサンプルの数は、私が予想するよりもはるかに少ないです。各サンプリング ポイントで非ネイティブ コードを実行している CPU スレッドに 1 があると保守的に仮定すると、100 サンプル/秒が予想されます。それでも、1 秒あたり 1 サンプルしか表示されません。

CPU使用率とメソッドのサンプル

マシン自体は通常 50% アイドル状態であるため、サンプリング スレッドが枯渇することはありません。

サンプル数が少ない原因は何ですか?

4

1 に答える 1