연습 1.2: 힙 덤프 캡처
시작하기 전에 연습 1.1: 필수 자원 가져오기를 완료해야 합니다.
시나리오
조직에 웹 프록시 어플리케이션의 일부인 3 티어(3-tiered) 큐잉 시스템이 있습니다.
큐잉 시스템의 각 티어에는 자체의 큐가 있습니다. 테스트 팀은 어플리케이션에
메모리 누수가 있다는 것을 밝혀내고 큐잉 시스템에서 메모리 누수가 있는 것으로
의심했습니다. 여러 큐 중 한 큐의 개발자인 사용자에게 메모리 누수가 있는 계층을
판별하는 작업이 주어졌습니다.
개요
메모리 누수 분석을 수행하려면 두 개의 Java 힙 덤프를 캡처해야 합니다.
힙(heap)은 JVM(Java Virtual Machine)이 실행 중일 때 Java 객체를 저장하는
데 사용하는 메모리 블록입니다. Java 힙 메모리는 가비지 콜렉터에 의해 관리되며, 남은 참조가 없는 Java 객체의 메모리를 자동으로 할당 취소합니다.
힙 덤프(heap dump)는 특정한 순간의 힙 컨텐츠 이미지입니다.
어플리케이션 실행 시 두 위치 간의 메모리 사용량 변화량을 볼 수 있도록 두
개의 힙 덤프가 필요합니다. 기본 제공 알고리즘은 힙을 비교하고 없어야 할 때 메모리에 있는
객체를 식별합니다. 알고리즘은 표시기 즉, 두 힙 덤프 간의 전체 시간 간격 동안 메모리에 있는 객체,
두 번째 힙에서 지정된 클래스의 객체 수 증가 및 객체에 대한 참조 수를 분석하여 누수 가능성이 있는지 식별합니다.
힙 덤프 캡처 준비
힙 덤프를 캡처하려면 프로파일링 및 로깅 Perspective로 전환해야 합니다.
- Software Development Platform 메뉴 표시줄에서 창 > Perspective 열기 >
기타...를 선택하십시오. Perspective 선택 대화 상자가 열립니다.
- 대화 상자의 왼쪽 하단에서 모두 표시를 누르십시오. 선택란이 선택되어 표시됩니다.
- Perspective 목록에서 프로파일링 및 로깅을 선택하고 확인을 누르십시오.
- 인에이블먼트 확인 대화 상자가 열리면 기능 항상 사용 및 이 메시지를
다시 표시 안함을 누른 다음 확인을 누르십시오.
- Software Development Platform이 프로파일링 및 로깅 Perspective로 전환됩니다.
힙 덤프 캡처
이 학습에서는 힙 덤프를 수동으로 캡처합니다. (또는 힙 덤프 캡처의 시간 간격을
자동으로 설정하거나 기존 힙 덤프를 가져올 수 있습니다.)
힙 덤프를 캡처하려면 다음을 수행하십시오.
- 어플리케이션 실행
- 메뉴 표시줄에서 실행 > 프로파일...을 선택하십시오. 프로파일 대화 상자가 열립니다.
- 형상 목록에서 Java 어플리케이션을 두 번 누르십시오.
New_configuration 항목이 목록에 표시됩니다.
- 이름 필드에 ThreeTierQueue_MemLkAnalysis를 입력하십시오.
- 기본 탭에 있는 프로젝트 필드 옆의 찾아보기를 누르십시오.
프로젝트 선택 대화 상자가 열립니다.
- ThreeTierQueue를 선택한 다음 확인을 누르십시오.
- "기본 클래스" 필드 옆의 검색을 누르십시오.
- 기본 유형 선택 대화 상자에서 TestThreeTierQueue를 선택한 다음
확인을 누르십시오.
- 프로파일 대화 상자에서 프로파일링 탭을 누르십시오.
- 개요 하위 탭에서 "메모리 누수 분석 - 수동 힙 덤프" 프로파일링 세트의 선택란을
선택하십시오. (프로파일링 세트(profiling set)는 실행하기 위해 수집할 프로파일링 데이터의
유형을 정의합니다.)
- 프로파일을 누르십시오. 어플리케이션이 실행되고 디스플레이가 다음과 같이
변경됩니다.
- 프로세스의 프로파일링 자원이 프로파일링 모니터에 표시됩니다.
- 누수 후보 보기가 열리고 다음에 수행할 작업에 대한 지시사항과 함께 현재 상태
메시지가 표시됩니다.
참고: 에이전트 제어기를 사용할 수 없다는 보안 메시지가 나타나면
데이터를 수집할 수 없는 경우를 읽으십시오.
- 힙 덤프 캡처
- 처리 시 어플리케이션을 따라갈 수 있도록 메뉴 표시줄에서 창 > 보기
표시 > 콘솔을 선택하여 콘솔 보기를 여십시오.
- 어플리케이션을 30초 정도 준비시키고 프로파일링할 모든 클래스가 로드되고
초기화되었는지 확인하십시오.
- 누수 후보 보기의 지시사항을 따르십시오. 힙 덤프 캡처 도구 모음 단추
를 눌러 힙 비교를 위한 시작점인
기준선 힙 덤프를 캡처하십시오. 추가 프로파일링 자원 즉, 자동 누수 발견용 자원과 방금 캡처한 힙 덤프용
자원이 프로파일링 모니터 보기에 표시됩니다.
- 몇 분 동안 어플리케이션이 실행되도록 한 후 다시 누수 후보 보기의 지시사항을
따라 두 번째 힙 덤프를 같은 방식으로 캡처하십시오.
두 번째 힙 덤프의 프로파일링 자원이 프로파일링 모니터에 표시됩니다.
- 콘솔 보기에서 종료 단추
를
눌러 프로세스를 종료하십시오.
데이터를 수집할 수 없는 경우
프로파일링 데이터를 수집하려면 에이전트 제어기가 실행 중이어야 합니다.
에이전트 제어기를 사용할 수 없다는 메시지를 받은 경우 에이전트 제어기가 설치되었는지
확인하고 수동으로 시작한 후 다시 시도하십시오. 지시사항은 설치 안내서를 참조하십시오.
설치 안내서는 Launchpad를 사용하여 액세스하거나 제품 CD의 disk1/install.html에서
찾을 수 있습니다.
데이터를 수집했으면 연습 1.3: 누수 후보 분석을
시작할 수 있습니다.