Java 为什么在VisualVM中CPU时间大于挂钟时间?

Java 为什么在VisualVM中CPU时间大于挂钟时间?,java,profiling,visualvm,Java,Profiling,Visualvm,在使用VisualVM进行评测时,CPU时间低于挂钟时间可能是由缓存未命中(=等待内存访问)、线程阻塞,甚至是操作系统决定其他更重要的内容造成的 但是,如果CPU时间实际上高于挂钟时间,我应该如何解释相反的情况呢?我的第一个猜测是并行化,但我的代码是单线程的。JIT并行化吗?我使用OpenJDK11 我的代码中有几个这样的例子,下面只是其中之一: 我不知道这种异常现象的真正原因是什么。然而: 当前一代热点JIT在编译代码时不会自动并行化代码。(阿法克) LinkedList.removeFirs

在使用VisualVM进行评测时,CPU时间低于挂钟时间可能是由缓存未命中(=等待内存访问)、线程阻塞,甚至是操作系统决定其他更重要的内容造成的

但是,如果CPU时间实际上高于挂钟时间,我应该如何解释相反的情况呢?我的第一个猜测是并行化,但我的代码是单线程的。JIT并行化吗?我使用OpenJDK11

我的代码中有几个这样的例子,下面只是其中之一:
我不知道这种异常现象的真正原因是什么。然而:

  • 当前一代热点JIT在编译代码时不会自动并行化代码。(阿法克)
  • LinkedList.removeFirst()
    操作无论如何都不能自动并行化
  • 因此,我认为我们可以排除这一可能的解释