1
ThreadMXBean threadBean = ManagementFactory.getThreadMXBean();
long startCPUTime = threadBean.getCurrentThreadCpuTime();
long startTime = System.nanoTime();

// Some Java Code (No Network/Database calls) .....

long endCPUTime = threadBean.getCurrentThreadCpuTime();
long endTime = System.nanoTime();

long timeElapsedCPU = endCPUTime - startCPUTime
long latency = endTime - startTime

JVM 启动时启用了详细的 GC 日志开关,并且在运行上述代码时没有 GC 日志。那么我们是否可以得出结论,如果实际延迟和经过的 CPU 时间之间存在巨大差异,那么线程被操作系统抢占了?

我观察到巨大的差异:延迟超过 1 秒和 timeElpasedCPU 几毫秒。

4

0 回答 0