Files
2nd/01_Archive/2026-04-20/힙 스냅샷 (Heap Snapshots).md
T

4.9 KiB

id, category, confidence_score, tags, last_reinforced, github_commit
id category confidence_score tags last_reinforced github_commit
P-REINFORCE-AUTO-1E11F0 10_Wiki/💡 Topics/Programming & Language 0.90
auto-reinforced
2026-04-20 [P-Reinforce] Continuous Worker - 힙 스냅샷 (Heap Snapshots)

힙 스냅샷 (Heap Snapshots)

📌 한 줄 통찰 (The Karpathy Summary)

힙 스냅샷(Heap Snapshots)은 특정 시점에 애플리케이션의 자바스크립트 객체와 관련된 DOM 노드가 차지하는 메모리 분포 및 전체 객체 그래프를 캡처하여 보여주는 분석 도구입니다 [1, 2]. 이 도구는 메모리 그래프를 분석하거나 여러 스냅샷을 비교하여 메모리 누수를 찾아내고 객체 참조 트리를 확인하는 데 주로 사용됩니다 [2]. 힙 스냅샷을 생성하는 작업은 항상 가비지 컬렉션(Garbage Collection)과 함께 시작되며, 전역 객체(global object)에서 도달 가능한 객체들만을 화면에 표시합니다 [3].

📖 구조화된 지식 (Synthesized Content)

  • 메모리 누수 탐지 기법 (3-스냅샷 기법): 가장 신뢰할 수 있는 메모리 누수 탐지 방법은 3개의 스냅샷을 사용하는 것입니다 [4]. 먼저 기준점이 되는 스냅샷 1을 찍은 후, 누수가 의심되는 작업(예: 모달 열기/닫기, 라우트 이동 등)을 수행하고 스냅샷 2를 찍습니다 [4]. 이후 동일한 작업을 반복한 뒤 스냅샷 3을 캡처합니다 [4]. 스냅샷 2와 3을 비교하여, 스냅샷 1과 2 사이에 할당되었으나 스냅샷 3에서도 여전히 가비지 컬렉션되지 않고 살아있는 객체들을 누수 후보로 특정할 수 있습니다 [4].

  • 객체 식별 및 추적 메커니즘: 스냅샷 내의 객체들에는 @ 기호 뒤에 고유한 ID 번호가 부여됩니다 [5-7]. 가비지 컬렉션이 발생하면 메모리 상에서 객체의 주소가 이동할 수 있으므로 주소를 표시하는 것은 의미가 없으며, 대신 이 고유 ID를 통해 여러 스냅샷 간에 동일한 객체의 상태를 정밀하게 비교하고 추적할 수 있습니다 [5, 7].

  • 주요 분석 뷰(Views): 힙 스냅샷은 분석 목적에 따라 다양한 시점을 제공합니다 [8].

    • Summary (요약): 객체들을 생성자(Constructor) 이름과 소스별로 그룹화하여 보여줍니다 [8]. 각 객체에 대해 루트로부터의 거리(Distance), 객체 자체가 차지하는 메모리 크기(Shallow size), 그리고 해당 객체를 삭제할 경우 확보할 수 있는 메모리 크기(Retained size)를 확인할 수 있습니다 [9].
    • Comparison (비교): 두 개 이상의 스냅샷 간의 차이를 분석하며, 작업 전후의 메모리 델타(추가 및 삭제된 객체 인스턴스)를 검사하여 메모리 누수를 확인합니다 [8, 10].
    • Containment (포함): DOMWindow 객체, 가비지 컬렉터가 사용하는 GC roots, 브라우저의 Native objects를 진입점으로 삼아 애플리케이션의 메모리 사용 구조를 거시적으로 보여주며 클로저 등을 로우 레벨에서 분석하게 돕습니다 [8, 11, 12].
  • Retainers (유지자) 분석: 힙 스냅샷 인터페이스 하단의 Retainers 패널은 선택된 특정 객체를 메모리에 유지시키고 있는 다른 객체들의 참조 체인을 가비지 컬렉션 루트에서부터 역순으로 보여줍니다 [1, 12, 13]. 이 참조 체인을 추적하면 객체가 왜 수집되지 않았는지 근본 원인을 찾아 코드를 수정할 수 있습니다 [1, 14].

⚠️ 모순 및 업데이트 (Contradictions & RL Update)

  • 과거 데이터와의 충돌: 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
  • 정책 변화: Programming & Language 분야의 자동 자산화 수행.

🔗 지식 연결 (Graph)


Last updated: 2026-04-19