2012-03-21 4 views
4

非常に多くのExecutorServicesを使用してサービスを実行しています。なぜjProfilerはCPUサイクルを使用してUnsafe.park/unparkを表示しますか?

jProfiler 7.1(sampling、Runnable)を使用してサービスをプロファイリングすると、sun.misc.Unsafe.park + unparkは現在、ホットスポットのほとんどのCPU時間を使用している呼び出しであることがわかります。

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

これは不可解です。

パークとパーク解除はブロックする必要があります。したがって、CPUサイクルを使用しないでください(少なくとも少量)。 これはjprofilerのバグです(sun.miscパッケージに含まれているため検出できません)か、実際にはExecutorServiceフレームワークの使用に何か問題がありますか?

+0

一部のスレッドを一時停止している可能性のあるデバッガが接続されている可能性はありますか? – oksayt

+0

いいえ、デバッガは接続されていません。また、トレースが示唆しているように、ExecutorServiceのgetTask部分には、ほとんどの「時間」が費やされているだけです。 – R4zorax

+0

jProfilerではこれは単にバグです。私は、ExecutorサービスのWorkerスレッドが実際にタスクを待っている間にサイクルを焼いていると信じています。 – R4zorax

答えて

0

JProfiler 7.1.1では修正されています。これは、プロファイルJVMを切断して再接続したときに発生する可能性があります。

関連する問題