我知道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(*)
sampling_period_ms = 20
似乎unsafe.park()没有使用walltime,因此它必须是CPU时间。根据Yourkit文档,CPU时间是CPU花在此方法上的实际时间,而不仅仅是方法进入和退出之间的时间。
Yourkit表明花了很多时间在park()方法上,但我不认为CPU花了很多时间在park()方法上。 你能确认一下吗?感谢。
答案 0 :(得分:4)
默认情况下,YourKit探查器不显示Unsafe.park()。 Profiler代理测量时间,但UI不显示它。要更改此设置,请在yjp.ini中指定-Dyjp.zero.time.methods = false并重新启动探查器UI。