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

메긴 키어니
메긴 키어니

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

목표 이전 도구의 작동 방식

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

이 도구는 기록 기간 동안 힙 스냅샷을 주기적으로 (50ms마다 한 번씩) 촬영하고 기록 종료 시 최종 스냅샷을 하나씩 촬영합니다.

할당 프로파일러

할당 프로파일러 사용 설정

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

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

힙 할당 프로파일러 기록

힙 할당 프로필 읽기

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

각 막대의 높이는 최근에 할당된 객체의 크기에 해당하며, 막대의 색상은 이러한 객체가 최종 힙 스냅샷에 아직 있는지 여부를 나타냅니다. 파란색 막대는 타임라인 종료 시점에 여전히 활성 상태인 객체를 나타내고, 회색 막대는 타임라인 동안 할당되었지만 그 이후 가비지로 수집된 객체를 나타냅니다.

할당 프로파일러 스냅샷

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

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

스냅샷 확대

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

함수별 메모리 할당 보기

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