2012-03-21 25 views
4

我们使用相当多的ExecutorServices运行服务。为什么jProfiler将Unsafe.park/unpark显示为使用CPU周期?

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

http://i.stack.imgur.com/wT2Cj.jpg

这是令人费解。

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

+0

是否有可能连接了可能暂停某些线程的调试器? – oksayt 2012-03-21 10:40:00

+0

不,没有附加调试器。另外,正如跟踪所示,它只是在ExecutorService的getTask部分中​​,大部分“时间”都花费在 – R4zorax 2012-03-21 14:37:58

+0

我们的希望是,这只是jProfiler中的一个“bug”。我很难相信Executor服务中的Worker线程实际上是在等待任务时刻循环。 – R4zorax 2012-03-21 14:45:08

回答

0

这在JProfiler 7.1.1中修复。当您断开连接并重新连接到配置文件的JVM时,可能会发生这种情况。

相关问题