힙 워커에서 오버헤드 최소화하기
작은 힙의 경우, 힙 스냅샷을 찍는 데 몇 초가 걸리지만, 매우 큰 힙의 경우 이는 시간이 오래 걸릴 수 있습니다. 물리적 메모리가 부족하면 계산이 훨씬 느려질 수 있습니다. 예를 들어, JVM이 50 GB 힙을 가지고 있고 로컬 머신에서 5 GB의 여유 물리 메모리만으로 힙 덤프를 분석하는 경우, JProfiler는 특정 인덱스를 메모리에 보관할 수 없으며 처리 시간이 불균형하게 증가합니다.
JProfiler는 주로 힙 분석을 위해 네이티브 메모리를 사용하기 때문에, -Xmx
값을 bin/jprofiler.vmoptions
파일에서
증가시키는 것은 OutOfMemoryError
가 발생했고 JProfiler가 그러한 수정을 지시한 경우가 아니라면 권장되지 않습니다. 네이티브 메모리는 사용 가능할 경우
자동으로 사용됩니다. 분석이 완료되고 내부 데이터베이스가 구축된 후에는 네이티브 메모리가 해제됩니다.
라이브 스냅샷의 경우, 힙 덤프를 찍은 직후에 분석이 계산됩니다. 스냅샷을 저장할 때, 분석은 스냅샷 파일 옆에 .analysis
접미사가 있는 디렉토리에 저장됩니다. 스냅샷
파일을 열면 힙 워커가 매우 빠르게 사용 가능합니다. .analysis
디렉토리를 삭제하면 스냅샷을 열 때 다시 계산이 수행되므로, 스냅샷을 다른 사람에게 보낼 때 분석 디렉토리를
함께 보낼 필요는 없습니다.
디스크 메모리를 절약하거나 생성된 .analysis
디렉토리가 불편한 경우, 일반 설정에서 그 생성을 비활성화할 수 있습니다.
HPROF 스냅샷과 오프라인 프로파일링으로 저장된 JProfiler 스냅샷은 옆에 .analysis
디렉토리가
없습니다. 이는 분석이 프로파일링 에이전트가 아닌 JProfiler UI에 의해 수행되기 때문입니다. 이러한 스냅샷을 열 때 계산을 기다리고 싶지 않다면,
명령줄 실행 파일을 사용하여 스냅샷을 jpanalyze사전 분석할
수 있습니다.
스냅샷을 쓰기 가능한 디렉토리에서 여는 것이 좋습니다. 분석이 없는 스냅샷을 열 때, 디렉토리가 쓰기 가능하지 않으면 임시 위치가 분석에 사용됩니다. 그런 경우 계산은 스냅샷을 열 때마다 반복되어야 합니다.
분석의 큰 부분은 유지된 크기의 계산입니다. 처리 시간이 너무 길고 유지된 크기가 필요하지 않다면, 힙 워커 옵션 대화 상자의 오버헤드 옵션에서 그 계산을 비활성화할 수 있습니다. 유지된 크기 외에도 "가장 큰 객체" 뷰도 사용할 수 없게 됩니다. 원시 데이터를 기록하지 않으면 힙 스냅샷이 작아지지만, 참조 뷰에서 이를 볼 수 없게 됩니다. 파일 선택 대화 상자에서 분석 사용자 정의를 선택하면 스냅샷을 열 때 동일한 옵션이 제공됩니다.