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框架时出现了错误?
是否有可能连接了可能暂停某些线程的调试器? – oksayt 2012-03-21 10:40:00
不,没有附加调试器。另外,正如跟踪所示,它只是在ExecutorService的getTask部分中,大部分“时间”都花费在 – R4zorax 2012-03-21 14:37:58
我们的希望是,这只是jProfiler中的一个“bug”。我很难相信Executor服务中的Worker线程实际上是在等待任务时刻循环。 – R4zorax 2012-03-21 14:45:08