2014-06-05 3 views
12

DTrace 및 Linux perf_events와 같은 시스템 프로파일 러는 JVM에서 스택 추적을 프로파일 링 할 수 있습니다. 이제는 별다른 문제가 아닙니다. DTrace와 perf_events는 단 하나의 프레임 만 많은 스택을 수집합니다. 이것들은 불완전한 부분적 스택입니다.시스템 프로파일 러를 사용하여 Java 스택 프레임 최적화 또는 프로파일 스택을 비활성화하려면 어떻게합니까?

나는 프레임 포인터와 드워프 스택이 풀린 상태에서 DTrace jstack()과 Linux perf_events를 시도했다.

이것이 최적의 프레임을 컴파일하는 핫스팟 때문인 것으로 생각됩니다. 표준 최적화 시스템 프로파일 러 (예 : Solaris DTrace 및 Linux perf)가 작동하도록이 최적화를 비활성화하는 방법이 있습니까? 이것은 JVM 문제이며, + ShowHiddenFrames

답변

6

: -XX : + DeoptimizeRandom -XX : MaxInlineSize = 0 -XX : -OmitStackTraceInFastThrow -XX : + UnlockDiagnosticVMOptions -XX

은 이미 다음과 같은 옵션을 시도했습니다 최고의 버그에 의해 설명되어

https://bugs.openjdk.java.net/browse/JDK-6276264

그의 DTrace jstack을()의 문제를 설명하는 동안, 나는 (레지스터로 프레임 포인터를 사용하여) 같은 최적화가 파괴 perf_events 믿습니다.

는 JDK 9 페이지에 고정 될 수있다 :이 응답에 대한 핫스팟 개발자

http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/2014-June/014842.html

감사합니다.