我知道 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 在此方法上花费的实际时间,而不仅仅是方法进入和退出之间的时间。
Yourkit 显示了在 park() 方法上花费了很多时间,但我认为 CPU 在 park() 方法上花费的时间并不多。你能确认一下吗?谢谢。