Java 为什么jProfiler显示Unsafe.park/unpark为使用CPU周期?

Java 为什么jProfiler显示Unsafe.park/unpark为使用CPU周期?,java,multithreading,sun,jprofiler,Java,Multithreading,Sun,Jprofiler,我们正在运行一个使用相当多服务的服务 当使用jProfiler 7.1(采样,可运行)评测服务时,我们可以看到sun.misc.Unsafe.park+unpark是当前热点中使用大部分CPU时间的调用 这令人费解 Park和unpark应该是阻塞的,因此不使用任何CPU周期(或者至少使用较低的CPU周期)。 这是来自jprofiler的某种错误(即,没有检测到它,因为它在sun.misc包中?)还是我们使用ExecutorService框架时确实存在错误?这在jprofiler 7.1.1中

我们正在运行一个使用相当多服务的服务

当使用jProfiler 7.1(采样,可运行)评测服务时,我们可以看到sun.misc.Unsafe.park+unpark是当前热点中使用大部分CPU时间的调用

这令人费解

Park和unpark应该是阻塞的,因此不使用任何CPU周期(或者至少使用较低的CPU周期)。
这是来自jprofiler的某种错误(即,没有检测到它,因为它在sun.misc包中?)还是我们使用ExecutorService框架时确实存在错误?

这在jprofiler 7.1.1中已修复。当您断开并重新连接到已分析的JVM时,可能会发生这种情况。

是否有可能连接了一个可能会暂停某些线程的调试器?否,没有连接调试器。此外,正如跟踪所示,大部分“时间”都是在ExecutorService的getTask部分,我们希望这只是jProfiler中的一个“bug”。我很难相信Executor服务中的工作线程在等待任务时实际上正在燃烧周期。@RasmusFuglsang我想说这更可能是jProfiler中的一个bug。例如,我知道hprof在输入一个方法之前和输入一个方法之后都需要一个开始时间。jprofiler可能没有考虑线程的暂停,而是将其计算为时间spent@RasmusFuglsangJProfiler支持在这里,它看起来确实像一个bug。这当然不是正常的行为,在我们的测试用例和我们测试的JVM中也不会发生这种情况。Unsafe.park()和Unsafe.unpark()是特殊的方法,由我们专门处理。“JDBC示例”会话也会发生这种情况吗(它也使用线程池)?请写信给support@ej-technologies.com提供了有关您正在使用的JVM版本和已分析JVM运行的平台的更多详细信息。