问题描述
在使用 VisualVM 进行分析时,低于挂钟时间的 cpu 时间可能是由缓存未命中(=等待内存访问)、线程阻塞,甚至是操作系统决定其他更重要的事情造成的。
但是如果 cpu 时间实际上高于挂钟时间,我应该如何解释相反的情况?我的第一个猜测是并行化,但我的代码是单线程的。 JIT 是否并行化?我使用 OpenJDK 11。
我的代码中有几个这样的例子,下面只是一个:

解决方法
我不知道这个异常的真正原因是什么。但是:
- 当前一代 HotSpot JIT 在编译代码时不会自动并行化代码。 (AFAIK)
-
LinkedList.removeFirst()
操作无论如何都不会自动并行化。
所以我认为我们可以排除这一点作为可能的解释。