연습 1.2: 힙 덤프 캡처

시작하기 전에 연습 1.1: 필수 자원 가져오기를 완료해야 합니다.

시나리오

조직에 웹 프록시 어플리케이션의 일부인 3 티어(3-tiered) 큐잉 시스템이 있습니다. 큐잉 시스템의 각 티어에는 자체의 큐가 있습니다. 테스트 팀은 어플리케이션에 메모리 누수가 있다는 것을 밝혀내고 큐잉 시스템에서 메모리 누수가 있는 것으로 의심했습니다. 여러 큐 중 한 큐의 개발자인 사용자에게 메모리 누수가 있는 계층을 판별하는 작업이 주어졌습니다.

개요

메모리 누수 분석을 수행하려면 두 개의 Java 힙 덤프를 캡처해야 합니다.

힙(heap)은 JVM(Java Virtual Machine)이 실행 중일 때 Java 객체를 저장하는 데 사용하는 메모리 블록입니다. Java 힙 메모리는 가비지 콜렉터에 의해 관리되며, 남은 참조가 없는 Java 객체의 메모리를 자동으로 할당 취소합니다.

힙 덤프(heap dump)는 특정한 순간의 힙 컨텐츠 이미지입니다.

어플리케이션 실행 시 두 위치 간의 메모리 사용량 변화량을 볼 수 있도록 두 개의 힙 덤프가 필요합니다. 기본 제공 알고리즘은 힙을 비교하고 없어야 할 때 메모리에 있는 객체를 식별합니다. 알고리즘은 표시기 즉, 두 힙 덤프 간의 전체 시간 간격 동안 메모리에 있는 객체, 두 번째 힙에서 지정된 클래스의 객체 수 증가 및 객체에 대한 참조 수를 분석하여 누수 가능성이 있는지 식별합니다.

힙 덤프 캡처 준비

힙 덤프를 캡처하려면 프로파일링 및 로깅 Perspective로 전환해야 합니다.

  1. Software Development Platform 메뉴 표시줄에서 창 > Perspective 열기 > 기타...를 선택하십시오. Perspective 선택 대화 상자가 열립니다.
  2. 대화 상자의 왼쪽 하단에서 모두 표시를 누르십시오. 선택란이 선택되어 표시됩니다.
  3. Perspective 목록에서 프로파일링 및 로깅을 선택하고 확인을 누르십시오.
  4. 인에이블먼트 확인 대화 상자가 열리면 기능 항상 사용 및 이 메시지를 다시 표시 안함을 누른 다음 확인을 누르십시오.
  5. Software Development Platform이 프로파일링 및 로깅 Perspective로 전환됩니다.

힙 덤프 캡처

이 학습에서는 힙 덤프를 수동으로 캡처합니다. (또는 힙 덤프 캡처의 시간 간격을 자동으로 설정하거나 기존 힙 덤프를 가져올 수 있습니다.)

힙 덤프를 캡처하려면 다음을 수행하십시오.

  1. 어플리케이션 실행
    1. 메뉴 표시줄에서 실행 > 프로파일...을 선택하십시오. 프로파일 대화 상자가 열립니다.
    2. 형상 목록에서 Java 어플리케이션을 두 번 누르십시오. New_configuration 항목이 목록에 표시됩니다.
    3. 이름 필드에 ThreeTierQueue_MemLkAnalysis를 입력하십시오.
    4. 기본 탭에 있는 프로젝트 필드 옆의 찾아보기를 누르십시오. 프로젝트 선택 대화 상자가 열립니다.
    5. ThreeTierQueue를 선택한 다음 확인을 누르십시오.
    6. "기본 클래스" 필드 옆의 검색을 누르십시오.
    7. 기본 유형 선택 대화 상자에서 TestThreeTierQueue를 선택한 다음 확인을 누르십시오.
    8. 프로파일 대화 상자에서 프로파일링 탭을 누르십시오.
    9. 개요 하위 탭에서 "메모리 누수 분석 - 수동 힙 덤프" 프로파일링 세트의 선택란을 선택하십시오. (프로파일링 세트(profiling set)는 실행하기 위해 수집할 프로파일링 데이터의 유형을 정의합니다.)
    10. 프로파일을 누르십시오. 어플리케이션이 실행되고 디스플레이가 다음과 같이 변경됩니다.
      • 프로세스의 프로파일링 자원이 프로파일링 모니터에 표시됩니다.
      • 누수 후보 보기가 열리고 다음에 수행할 작업에 대한 지시사항과 함께 현재 상태 메시지가 표시됩니다.
        참고: 에이전트 제어기를 사용할 수 없다는 보안 메시지가 나타나면 데이터를 수집할 수 없는 경우를 읽으십시오.
  2. 힙 덤프 캡처
    1. 처리 시 어플리케이션을 따라갈 수 있도록 메뉴 표시줄에서 창 > 보기 표시 > 콘솔을 선택하여 콘솔 보기를 여십시오.
    2. 어플리케이션을 30초 정도 준비시키고 프로파일링할 모든 클래스가 로드되고 초기화되었는지 확인하십시오.
    3. 누수 후보 보기의 지시사항을 따르십시오. 힙 덤프 캡처 도구 모음 단추 를 눌러 힙 비교를 위한 시작점인 기준선 힙 덤프를 캡처하십시오. 추가 프로파일링 자원 즉, 자동 누수 발견용 자원과 방금 캡처한 힙 덤프용 자원이 프로파일링 모니터 보기에 표시됩니다.
    4. 몇 분 동안 어플리케이션이 실행되도록 한 후 다시 누수 후보 보기의 지시사항을 따라 두 번째 힙 덤프를 같은 방식으로 캡처하십시오. 두 번째 힙 덤프의 프로파일링 자원이 프로파일링 모니터에 표시됩니다.
    5. 콘솔 보기에서 종료 단추 를 눌러 프로세스를 종료하십시오.

데이터를 수집할 수 없는 경우

프로파일링 데이터를 수집하려면 에이전트 제어기가 실행 중이어야 합니다. 에이전트 제어기를 사용할 수 없다는 메시지를 받은 경우 에이전트 제어기가 설치되었는지 확인하고 수동으로 시작한 후 다시 시도하십시오. 지시사항은 설치 안내서를 참조하십시오. 설치 안내서는 Launchpad를 사용하여 액세스하거나 제품 CD의 disk1/install.html에서 찾을 수 있습니다.

데이터를 수집했으면 연습 1.3: 누수 후보 분석을 시작할 수 있습니다.

사용 약관 | 피드백
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.