연습 1.3: 누수 후보 분석

시작하기 전에 연습 1.2: 힙 덤프 캡처를 완료해야 합니다.

이 연습에서는 먼저 누수될 것으로 보이는 객체의 목록(예: 배열, 벡터 및 세션)을 생성합니다. 이러한 객체가 "누수 후보"입니다. 그런 다음 목록을 분석하여 누수를 식별합니다.

누수 후보 목록 생성

목록을 생성하려면 다음을 수행하십시오.

  1. 누수 후보 보기의 지시사항에 따라 누수 분석 도구 모음 단추 를 누르십시오. 누수 분석 옵션 선택 대화 상자가 열립니다.
  2. 대화 상자에서 두 힙 덤프의 선택란이 선택되었는지 확인하십시오.
    참고: 임계값은 기본적으로 20으로 설정됩니다. 이것은 가능성 값이 20 이상인 누수 후보만 표시된다는 의미입니다. (가능성 값에 대한 자세한 정보는 이 연습의 뒷부분에 있습니다.)
  3. 확인을 눌러 목록을 생성하십시오. Software Development Platform의 오른쪽 하단 모서리에 있는 표시기가 누수 후보를 찾는 중임을 알립니다.

누수 후보 보기 개요

프로세스가 완료되면 누수 후보 보기에 누수 후보의 목록이 표시됩니다.

각 후보마다 100 ~ 1의 가능성 값을 가지며 가능성이 가장 높은 후보의 값은 100입니다. 그에 따라 나머지 후보의 순위가 매겨지며 가능성의 내림차순으로 나열됩니다. (힙 비교 알고리즘은 두 힙 덤프 간 간격 중에 누수의 크기와 증가에 따라 가능성 값을 계산합니다.)

이 프로파일링이 실행되는 임계값은 20으로 설정되었으며 가능성 값이 19 이하인 후보는 표시되지 않습니다.

보기에는 각 누수 후보에 대해 다음과 같은 데이터가 표시됩니다.

누수 분석 및 식별

누수를 식별하려면 다음을 수행하십시오.

  1. 누수 후보 보기에서 가능성이 100인 누수 후보의 데이터를 찾으십시오.
  2. 누수 후보를 두 번 누르십시오. 객체 참조 그래프 보기가 열리고 누수 후보의 그래픽 데이터가 표시됩니다. (힙 덤프 표시를 준비하는 데 약간 시간이 걸릴 수 있습니다.)
  3. 객체 참조 그래프를 검사하십시오. 다음 사항에 주의하십시오.
  4. Object 배열과 String을 연결하는 경로 위에 커서를 일시정지하고 표시되는 툴팁을 읽으십시오. "계수"가 누수 후보 보기에 표시된 누수 갯수와 같게 표시되므로 누수로 식별된 문자열 콜렉션입니다.
  5. 2차 큐와 3차 큐는 모두 Object 배열에 대한 참조를 보유하지만 3차 큐는 누수 후보 보기에서 누수로 식별되지 않습니다. 그 이유는 다음과 같습니다.
  6. 객체 참조 그래프에서 String 객체를 두 번 누르십시오. 객체 세부사항 보기가 열립니다. String 객체에 대한 모든 세부사항(String 객체를 참조하는 모든 객체, 이 객체가 차례로 참조하는 모든 객체 포함)이 표시됩니다. 객체 세부사항 보기에서 레퍼러 중 하나를 눌러 레퍼러를 위로 탐색하거나 레퍼리(객체가 참조하는 객체) 중 하나를 눌러 레퍼리를 아래로 탐색할 수 있습니다.

2차 큐가 누수 객체이며 Vector 객체가 다수의 String 객체에 대한 참조를 보유하므로 누수된다는 점을 확인했습니다.

이제, 연습 1.4: 메모리 누수 해결을 시작할 준비가 되었습니다.

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