5

Yourkit が Thread.sleep() のようなメソッドのウォール タイムを測定することは知っていますが、unsafe.park ネイティブ メソッドはどうでしょうか? ベローズはサンプリング設定です。

walltime=java.io.RandomAccessFile : readBytes(byte[], int, int) walltime=java.io.RandomAccessFile : read() walltime=java.io.RandomAccessFile : write(int) walltime=java.io.RandomAccessFile : writeBytes (byte[], int, int) walltime=java.net.SocketInputStream : socketRead0(java.io.FileDescriptor, byte[], int, int, int) walltime=java.net.SocketOutputStream : socketWrite0(java.io.FileDescriptor , byte[], int, int) walltime=java.lang.Thread : sleep(*)

サンプリング期間_ミリ秒=20

unsafe.park() は walltime を使用していないようだったので、CPU 時間である必要があります。Yourkit のドキュメントに基づくと、CPU 時間は、メソッドの開始から終了までの時間だけでなく、CPU がこのメソッドに費やした実際の時間です。

あなたのキットは、park() メソッドに多くの時間が費やされていることを示しましたが、CPU が park() メソッドに多くの時間を費やしたとは思いません。これについて確認していただけますか?ありがとう。

4

1 に答える 1

4

デフォルトでは、YourKit プロファイラーは Unsafe.park() を表示しません。Profiler エージェントは時間を測定しますが、UI には表示されません。これを変更するには、yjp.ini で -Dyjp.zero.time.methods=false を指定し、プロファイラー UI を再起動してください。

于 2015-04-15T12:25:33.663 に答える