[G1-Sync] Manual knowledge update

This commit is contained in:
Antigravity Agent
2026-04-30 22:42:02 +09:00
parent 0bd4f19e38
commit c36c0644a1
4888 changed files with 18470 additions and 18602 deletions
@@ -1,16 +1,16 @@
---
id: P-REINFORCE-AUTO-1E11F0
id: [[P-Reinforce]]-AUTO-1E11F0
category: "10_Wiki/💡 Topics/Programming & Language"
confidence_score: 0.90
tags: [auto-reinforced]
last_reinforced: 2026-04-20
github_commit: "[P-Reinforce] Continuous Worker - 힙 스냅샷 (Heap Snapshots)"
github_commit: "[P-Reinforce] Continuous Worker - 힙 스냅샷 ([[Heap Snapshot]]s)"
---
# [[힙 스냅샷 (Heap Snapshots)]]
## 📌 한 줄 통찰 (The Karpathy Summary)
> 힙 스냅샷(Heap Snapshots)은 특정 시점에 애플리케이션의 자바스크립트 객체와 관련된 DOM 노드가 차지하는 메모리 분포 및 전체 객체 그래프를 캡처하여 보여주는 분석 도구입니다 [1, 2]. 이 도구는 메모리 그래프를 분석하거나 여러 스냅샷을 비교하여 메모리 누수를 찾아내고 객체 참조 트리를 확인하는 데 주로 사용됩니다 [2]. 힙 스냅샷을 생성하는 작업은 항상 가비지 컬렉션(Garbage Collection)과 함께 시작되며, 전역 객체(global object)에서 도달 가능한 객체들만을 화면에 표시합니다 [3].
> 힙 스냅샷(Heap Snapshots)은 특정 시점에 애플리케이션의 자바스크립트 객체와 관련된 DOM 노드가 차지하는 메모리 분포 및 전체 객체 그래프를 캡처하여 보여주는 분석 도구입니다 [1, 2]. 이 도구는 메모리 그래프를 분석하거나 여러 스냅샷을 비교하여 메모리 누수를 찾아내고 객체 참조 트리를 확인하는 데 주로 사용됩니다 [2]. 힙 스냅샷을 생성하는 작업은 항상 가비지 컬렉션([[Garbage Collection]])과 함께 시작되며, 전역 객체(global object)에서 도달 가능한 객체들만을 화면에 표시합니다 [3].
## 📖 구조화된 지식 (Synthesized Content)
* **메모리 누수 탐지 기법 (3-스냅샷 기법):**
@@ -23,7 +23,7 @@ github_commit: "[P-Reinforce] Continuous Worker - 힙 스냅샷 (Heap Snapshots)
힙 스냅샷은 분석 목적에 따라 다양한 시점을 제공합니다 [8].
* **Summary (요약):** 객체들을 생성자(Constructor) 이름과 소스별로 그룹화하여 보여줍니다 [8]. 각 객체에 대해 루트로부터의 거리(`Distance`), 객체 자체가 차지하는 메모리 크기(`Shallow size`), 그리고 해당 객체를 삭제할 경우 확보할 수 있는 메모리 크기(`Retained size`)를 확인할 수 있습니다 [9].
* **Comparison (비교):** 두 개 이상의 스냅샷 간의 차이를 분석하며, 작업 전후의 메모리 델타(추가 및 삭제된 객체 인스턴스)를 검사하여 메모리 누수를 확인합니다 [8, 10].
* **Containment (포함):** `DOMWindow` 객체, 가비지 컬렉터가 사용하는 `GC roots`, 브라우저의 `Native objects`를 진입점으로 삼아 애플리케이션의 메모리 사용 구조를 거시적으로 보여주며 클로저 등을 로우 레벨에서 분석하게 돕습니다 [8, 11, 12].
* **Containment (포함):** `DOMWindow` 객체, 가비지 컬렉터가 사용하는 `[[GC Root]]s`, 브라우저의 `Native objects`를 진입점으로 삼아 애플리케이션의 메모리 사용 구조를 거시적으로 보여주며 클로저 등을 로우 레벨에서 분석하게 돕습니다 [8, 11, 12].
* **Retainers (유지자) 분석:**
힙 스냅샷 인터페이스 하단의 Retainers 패널은 선택된 특정 객체를 메모리에 유지시키고 있는 다른 객체들의 참조 체인을 가비지 컬렉션 루트에서부터 역순으로 보여줍니다 [1, 12, 13]. 이 참조 체인을 추적하면 객체가 왜 수집되지 않았는지 근본 원인을 찾아 코드를 수정할 수 있습니다 [1, 14].
@@ -33,8 +33,8 @@ github_commit: "[P-Reinforce] Continuous Worker - 힙 스냅샷 (Heap Snapshots)
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
## 🔗 지식 연결 (Graph)
- **Related Topics:** [[가비지 컬렉션 (Garbage Collection)]], 메모리 누수 (Memory Leaks), Shallow Size, Retained Size, 할당 타임라인 (Allocation Timeline)
- **Projects/Contexts:** Chrome DevTools 메모리 패널, V8 자바스크립트 엔진
- **Related Topics:** [[가비지 컬렉션 (Garbage Collection)]], 메모리 누수 ([[Memory Leaks]]), Shallow Size, Retained Size, 할당 타임라인 ([[Allocation Timeline]])
- **Projects/Contexts:** [[Chrome DevTools]] 메모리 패널, V8 자바스크립트 엔진
- **Contradictions/Notes:** 원시 힙 스냅샷에는 사용자의 애플리케이션 객체뿐만 아니라 `(compiled code)`, `(concatenated string)`, `InternalNode` 등 수천 개의 V8 내부 항목들이 포함되어 있으므로, 생성자 필터를 통해 애플리케이션 객체에 초점을 맞춰야 합니다 [15-19]. 또한 메모리 그래프가 커진다고 해서 모두 누수인 것은 아니며(캐시 보존 등 의도적 보존일 수 있음), 네이티브 코드로 실행되는 getter가 구현된 프로퍼티나 숫자 같은 비문자열 값은 자바스크립트 힙에 저장되지 않아 스냅샷에 캡처되지 않는다는 점을 유의해야 합니다 [15, 20].
---