2012-03-21 24 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時,可能會發生這種情況。

相關問題