-XX:+PrintGCApplicationStoppedTime
세이프포인팅 편향 문제는 카운티드 루프로도 설명할 수 있다.
for (int i = 0; i < LIMIT; i++) {
// 루프 바디에는 '단순' 작업만 있다.
}
LIMIT
값이 크다면 JIT 컴파일러는 루프 처음으로 되돌리는 백 브랜치를 포함하고 루프 백 끝에 세이프포인트 체크를 삽입한다.LIMIT
값이 작다면 루프가 펼쳐져 세이프포인트를 하지 않는다.-XX:+UnlockCommercialFeatures -XX:+FlightRecorder
AsyncGetCallTrace
라는 프라이빗 API를 활용한다.AsyncGetCallTrace()
을 통해 호출 스택을 수집할 수 있다.NEW
: 주어진 타입 객체를 생성할 공간을 할당NEWARRAY
: 기본형 배열 공간을 할당ANEWARRAY
: 주어진 타입의 객체 배열 공간을 할당