할당 프로파일러 도구 사용 방법

Meggin Kearney
Meggin Kearney

할당 프로파일러 도구를 사용하면 적절하게 가비지 컬렉션되지 않은 객체를 찾고 메모리를 계속 유지합니다.

목표 이전 도구의 작동 방식

할당 프로파일러힙 프로파일러의 자세한 스냅샷 정보를 타임라인 패널의 증분 업데이트 및 추적과 결합합니다. 이러한 도구와 마찬가지로 추적 객체의 힙 할당에는 기록을 시작하고 일련의 작업을 실행한 다음 분석을 위해 기록을 중지하는 작업이 포함됩니다.

이 도구는 기록 전반에 걸쳐 주기적으로 (50ms마다) 힙 스냅샷을 촬영하고 기록이 끝날 때 최종 스냅샷을 하나 촬영합니다.

할당 프로파일러

할당 프로파일러 사용 설정

할당 프로파일러 사용을 시작하려면 다음 안내를 따르세요.

  1. 최신 Chrome Canary를 사용 중인지 확인합니다.
  2. 개발자 도구를 열고 오른쪽 하단에서 톱니바퀴 아이콘을 클릭합니다.
  3. 이제 Profiler 패널을 열면 'Record Heap Allocations'라는 프로필이 표시됩니다.

힙 할당 프로파일러 기록

힙 할당 프로필 읽기

힙 할당 프로필은 객체가 생성되는 위치를 보여주고 유지 경로를 식별합니다. 아래 스냅샷에서 상단의 막대는 힙에서 새 객체가 발견된 시점을 나타냅니다.

각 막대의 높이는 최근에 할당된 객체의 크기와 일치하며, 막대의 색상은 이러한 객체가 최종 힙 스냅샷에 여전히 존재하는지를 나타냅니다. 파란색 막대는 타임라인 끝에 아직 활성 상태인 객체를 나타내고, 회색 막대는 타임라인 동안 할당되었지만 이후 가비지 컬렉션된 객체를 나타냅니다.

할당 프로파일러 스냅샷

아래 스냅샷에서는 작업이 10회 수행되었습니다. 샘플 프로그램은 객체 5개를 캐시하므로 마지막 5개의 파란색 막대가 예상됩니다. 그러나 가장 왼쪽의 파란색 막대는 잠재적인 문제를 나타냅니다.

그런 다음 위의 타임라인에 있는 슬라이더를 사용하여 특정 스냅샷을 확대하고 해당 시점에 최근 할당된 객체를 확인할 수 있습니다.

스냅샷 확대

힙에서 특정 객체를 클릭하면 힙 스냅샷의 하단에 보존 트리가 표시됩니다. 객체의 보관 경로를 검사하면 객체가 수집되지 않은 이유를 파악할 수 있는 충분한 정보를 얻을 수 있으며, 필요한 코드를 변경하여 불필요한 참조를 삭제할 수 있습니다.

함수별 메모리 할당 보기

JavaScript 함수별로 메모리 할당을 볼 수도 있습니다. 자세한 내용은 함수별 메모리 할당 조사를 참고하세요.