JProfiler 도움말Download

힙 워커에서 오버헤드 최소화하기


작은 힙의 경우, 힙 스냅샷을 찍는 데 몇 초가 걸리지만, 매우 큰 힙의 경우 이는 시간이 오래 걸릴 수 있습니다. 물리적 메모리가 부족하면 계산이 훨씬 느려질 수 있습니다. 예를 들어, JVM이 50 GB 힙을 가지고 있고 로컬 머신에서 5 GB의 여유 물리 메모리만으로 힙 덤프를 분석하는 경우, JProfiler는 특정 인덱스를 메모리에 보관할 수 없으며 처리 시간이 불균형하게 증가합니다.

JProfiler는 주로 힙 분석을 위해 네이티브 메모리를 사용하기 때문에, -Xmx 값을 bin/jprofiler.vmoptions 파일에서 증가시키는 것은 OutOfMemoryError가 발생했고 JProfiler가 그러한 수정을 지시한 경우가 아니라면 권장되지 않습니다. 네이티브 메모리는 사용 가능할 경우 자동으로 사용됩니다. 분석이 완료되고 내부 데이터베이스가 구축된 후에는 네이티브 메모리가 해제됩니다.

라이브 스냅샷의 경우, 힙 덤프를 찍은 직후에 분석이 계산됩니다. 스냅샷을 저장할 때, 분석은 스냅샷 파일 옆에 .analysis 접미사가 있는 디렉토리에 저장됩니다. 스냅샷 파일을 열면 힙 워커가 매우 빠르게 사용 가능합니다. .analysis 디렉토리를 삭제하면 스냅샷을 열 때 다시 계산이 수행되므로, 스냅샷을 다른 사람에게 보낼 때 분석 디렉토리를 함께 보낼 필요는 없습니다.

디스크 메모리를 절약하거나 생성된 .analysis 디렉토리가 불편한 경우, 일반 설정에서 그 생성을 비활성화할 수 있습니다.

HPROF 스냅샷과 오프라인 프로파일링으로 저장된 JProfiler 스냅샷은 옆에 .analysis 디렉토리가 없습니다. 이는 분석이 프로파일링 에이전트가 아닌 JProfiler UI에 의해 수행되기 때문입니다. 이러한 스냅샷을 열 때 계산을 기다리고 싶지 않다면, jpanalyze 명령줄 실행 파일을 사용하여 스냅샷을 사전 분석할 수 있습니다.

스냅샷을 쓰기 가능한 디렉토리에서 여는 것이 좋습니다. 분석이 없는 스냅샷을 열 때, 디렉토리가 쓰기 가능하지 않으면 임시 위치가 분석에 사용됩니다. 그런 경우 계산은 스냅샷을 열 때마다 반복되어야 합니다.

분석의 큰 부분은 유지된 크기의 계산입니다. 처리 시간이 너무 길고 유지된 크기가 필요하지 않다면, 힙 워커 옵션 대화 상자의 오버헤드 옵션에서 그 계산을 비활성화할 수 있습니다. 유지된 크기 외에도 "가장 큰 객체" 뷰도 사용할 수 없게 됩니다. 원시 데이터를 기록하지 않으면 힙 스냅샷이 작아지지만, 참조 뷰에서 이를 볼 수 없게 됩니다. 파일 선택 대화 상자에서 분석 사용자 정의를 선택하면 스냅샷을 열 때 동일한 옵션이 제공됩니다.