2012-03-21 3 views
4

우리는 상당수의 ExecutorServices를 사용하여 서비스를 실행하고 있습니다.jProfiler가 Unsafe.park/unpark에 CPU주기를 사용하는 이유는 무엇입니까?

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 부분에 "time"이 대부분 사용되었습니다. – R4zorax

+0

jProfiler에서 단순히 "버그"라는 희망이 있습니다. Executor 서비스의 Worker 스레드가 실제로 작업을 기다리는 동안 불타 오르는 사이클이라고 믿는 데 어려움을 겪고 있습니다. – R4zorax

답변

0

JProfiler 7.1.1에서 수정되었습니다. 프로파일 링 된 JVM을 단절하고 다시 연결할 때 발생할 수 있습니다.