4.3 KiB
4.3 KiB
id, category, confidence_score, tags, last_reinforced, github_commit
| id | category | confidence_score | tags | last_reinforced | github_commit | |
|---|---|---|---|---|---|---|
| P-REINFORCE-AUTO-BE247C | 10_Wiki/💡 Topics/AI | 0.90 |
|
2026-04-20 | [P-Reinforce] Continuous Worker - 힙 스냅샷(Heap Snapshot) |
힙 스냅샷(Heap Snapshot)
📌 한 줄 통찰 (The Karpathy Summary)
지식 요약 정보 추출 중...
📖 구조화된 지식 (Synthesized Content)
-
작동 원리 및 고유 ID 식별:
- 힙 스냅샷은 글로벌 객체(Global Object)에서 도달할 수 있는(Reachable) 객체들만 캡처하며, 캡처를 시작할 때 항상 가비지 컬렉션을 먼저 수행하여 살아있는 객체만 남깁니다 [5].
- 스냅샷 내의 각 객체에는
@기호 뒤에 고유 ID(예:@12345)가 부여됩니다 [6, 7]. 이 ID는 가비지 컬렉션 중 객체의 메모리 주소가 변경되더라도 여러 스냅샷 세션 간에 동일하게 유지되므로, 힙 상태를 객체 단위로 정확히 비교할 수 있게 해줍니다 [6-10].
-
메모리 크기 측정 방식:
- Shallow Size (얕은 크기): 객체 자체가 차지하는 메모리 크기입니다. 일반적으로 배열과 문자열이 큰 얕은 크기를 가집니다 [11].
- Retained Size (보존된 크기): 해당 객체를 삭제하여 그에 종속된 객체들이 더 이상 도달할 수 없게(Unreachable) 될 때 확보할 수 있는 최대 메모리 크기입니다 [11].
-
동작 상세 로그 추적을 위한 주요 분석 뷰(Views):
- Summary (요약 뷰): 생성자(Constructor) 이름별로 객체를 그룹화하여 보여주며, 분리된 DOM 노드(Detached DOM nodes)와 같은 누수를 추적하는 데 유용합니다 [4, 12, 13].
- Comparison (비교 뷰): 특정 작업(예: 모달 열기/닫기) 전후로 캡처한 두 스냅샷 간의 차이점(Delta)을 보여주어, 해제되지 않고 새로 추가된 객체를 통해 메모리 누수를 확인합니다 [1, 3, 4, 14, 15].
- Containment (포함 뷰): 애플리케이션의 객체 구조를 조감도(Bird's eye view)처럼 보여주어 클로저(Closure) 내부나 GC 루트(Roots)를 분석할 수 있습니다 [4, 15].
- Retainers (보유자 패널): 특정 객체를 참조하여 메모리에 살아있게 만드는 참조 체인(Chain of references)을 보여줍니다 [1, 16]. 이 체인을 거슬러 올라가면 누수의 근본 원인을 찾을 수 있습니다 [1].
-
분석 시 주의 사항(Gotchas):
- 원시 힙에는 수천 개의 V8 내부 객체(예:
(compiled code),system / Context)가 포함되어 있으므로, 애플리케이션의 객체에 집중하려면 "Constructor" 필터를 사용해야 합니다 [17-19]. - 코드 축소(Minification)로 인해 참조 체인을 읽기 어려울 수 있으므로, 소스 맵(Source Maps)을 사용하거나 익명 함수 대신 기명 함수를 사용하여 클로저를 쉽게 식별할 수 있도록 해야 합니다 [17, 20].
- 숫자와 같은 비문자열 값이나 네이티브 코드를 실행하는 Getter로 구현된 속성들은 자바스크립트 힙에 저장되지 않아 캡처되지 않을 수 있습니다 [12].
- 원시 힙에는 수천 개의 V8 내부 객체(예:
⚠️ 모순 및 업데이트 (Contradictions & RL Update)
- 과거 데이터와의 충돌: 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
- 정책 변화: AI 분야의 자동 자산화 수행.
🔗 지식 연결 (Graph)
- Related Topics: 메모리 누수(Memory Leak), 가비지 컬렉션(Garbage Collection), Allocation Timeline
- Projects/Contexts: Chrome DevTools Memory Panel, V8 Engine Heap Management
- Contradictions/Notes: 메모리 그래프가 증가한다고 해서 무조건 메모리 누수인 것은 아닙니다. 캐시(Caches), 실행 취소 내역, 가상화된 목록 버퍼 등은 의도적으로 데이터를 보존하므로 의도적인 메모리 보존과 사고에 의한 메모리 누수를 명확히 구별해야 합니다 [17].
Last updated: 2026-04-19
- Raw Source: 00_Raw/2026-04-20/힙 스냅샷(Heap Snapshot).md