为啥在 VisualVM 中 CPU 时间大于挂钟时间?
Posted
技术标签:
【中文标题】为啥在 VisualVM 中 CPU 时间大于挂钟时间?【英文标题】:Why is CPU time greater than wall clock time in VisualVM?为什么在 VisualVM 中 CPU 时间大于挂钟时间? 【发布时间】:2021-03-24 22:21:25 【问题描述】:使用 VisualVM 进行分析时,CPU 时间低于挂钟时间可能是由于缓存未命中(=等待内存访问)、线程阻塞,甚至是操作系统认为其他更重要的事情。
但是,如果 CPU 时间实际上高于挂钟时间,我应该如何解释相反的情况?我的第一个猜测是并行化,但我的代码是单线程的。 JIT 是否并行化?我使用 OpenJDK 11。
我的代码中有几个这样的例子,下面只是一个:
【问题讨论】:
【参考方案1】:我不知道这个异常的真正原因是什么。然而:
-
当前一代 HotSpot JIT 在编译代码时不会自动并行化代码。 (AFAIK)
LinkedList.removeFirst()
操作无论如何都不会自动并行化。
所以我认为我们可以排除它作为可能的解释。
【讨论】:
以上是关于为啥在 VisualVM 中 CPU 时间大于挂钟时间?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Linux/Windows 上测量 CPU 时间和挂钟时间?