Files
2nd/10_Wiki/Topics/Memory & Systems/Allocation Timeline.md
T

95 lines
5.3 KiB
Markdown

---
id: wiki-2026-0508-allocation-timeline
title: Allocation Timeline
category: 10_Wiki/Topics
status: needs_review
canonical_id: self
aliases: [P-Reinforce-B75DFC]
duplicate_of: none
source_trust_level: A
confidence_score: 0.95
tags: [uncategorized]
raw_sources: []
last_reinforced: 2026-04-20
github_commit: "[P-Reinforce] Mega Batch - Wikified Allocation Timeline"
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
tech_stack:
language: unspecified
framework: unspecified
---
# [[Allocation Timeline]]
## 📌 한 줄 통찰 (The Karpathy Summary)
> **Allocation Timeline**(또는 Allocation instrumentation on timeline)은 [[Chrome DevTools]]의 Memory 패널에서 제공하는 프로파일링 도구로, 시간 경과에 따른 메모리 할당을 기록하고 추적하여 애플리케이션의 메모리 누수를 진단하는 데 사용됩니다 [1-3]. 이 도구는 힙 프로파일러(Heap Profiler)의 상세한 스냅샷 정보와 타임라인 패널의 증분 업데이트 및 추적 기능을 결합하여 객체의 생성 위치와 유지 경로([[Retaining Path]])를 실시간으로 식별할 수 있게 해줍니다 [2, 4, 5].
## 📖 구조화된 지식 (Synthesized Content)
- **동작 원리와 데이터 수집:** Allocation Timeline은 레코딩이 진행되는 동안 주기적으로(최대 50ms 단위로 자주) 힙 스냅샷을 캡처하고, 레코딩이 종료될 때 마지막 스냅샷을 한 번 더 찍어 데이터를 구성합니다 [3, 6, 7]. 할당된 각 객체에는 `@` 기호 뒤에 고유한 객체 ID가 부여되는데, 이 ID는 여러 스냅샷에 걸쳐 지속되므로 메모리 주소가 변경되더라도 힙 상태를 정확하게 비교할 수 있게 해줍니다 [6, 7].
- **타임라인 시각화 및 막대(Bar)의 의미:** 타임라인 상단의 막대는 힙에서 새 객체가 할당된 시점과 그 크기(막대의 높이)를 나타냅니다 [3, 5, 8].
- **파란색 막대 (Blue bars):** 타임라인 종료 시점까지 가비지 컬렉션(GC)되지 않고 메모리에 여전히 살아있는(live) 객체를 의미합니다 [1, 3, 8, 9].
- **회색 막대 (Gray bars):** 타임라인 동안 할당되었으나 이후 가비지 컬렉터에 의해 성공적으로 수거되어 해제된 객체를 나타냅니다 [1, 3, 8, 9].
- **메모리 누수(Memory Leak) 진단 과정:** 특정 사용자 작업(예: 할당 및 해제 버튼 클릭)을 반복할 때 **파란색 막대가 지속적으로 남는다면 이는 메모리 누수가 발생했을 가능성을 나타내는 주요 지표**입니다 [9, 10]. 분석 시 마우스를 드래그하여 특정 시간대로 확대(zoom in)하면, 해당 기간 동안 할당된 후 예상 수명을 넘겨 해제되지 않은 객체만 `Constructor` 창에 필터링하여 볼 수 있습니다 [1, 10-12].
- **원인 식별 및 스택 트레이스 추적:** `Constructor` 창에서 특정 생성자를 클릭하면 `Retainers` 창에 해당 객체를 메모리에 유지시키는 참조 경로(retaining tree)가 표시됩니다 [11, 13]. 또한 할당된 타임라인 도구는 할당 당시의 스택 트레이스(stack trace)를 제공하므로, 개발자는 메모리 누수를 유발한 객체가 코드의 정확히 어느 부분에서 생성되었는지 파악하고 불필요한 참조를 수정할 수 있습니다 [1, 14, 15].
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
- **과거 데이터와의 충돌:** 지식 자산화 및 기존 네트워크 연동 단계.
- **정책 변화:** Memory & Systems 카테고리의 전문성 확보 및 링크 밀도 최적화.
## 🔗 지식 연결 (Graph)
- **Related Topics:** [[Heap Snapshot]], [[Garbage Collection]], Memory Leak, [[Retaining Path]], [[V8 Heap Architecture]]
- **Projects/Contexts:** [[Chrome DevTools]], [[V8 Engine]]
- **Contradictions/Notes:** 소스 전반에 걸쳐 내용의 모순은 없습니다. 다양한 소스가 일관되게 Allocation Timeline의 파란색/회색 막대의 의미와 메모리 누수를 추적하기 위한 스택 트레이스 및 Retainer 분석의 유용성을 강조하고 있습니다.
---
*Last updated: 2026-04-19*
---
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
**언제 이 지식을 쓰는가:**
- *(TODO)*
**언제 쓰면 안 되는가:**
- *(TODO)*
## 🧪 검증 상태 (Validation)
- **정보 상태:** needs_review
- **출처 신뢰도:** A
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
## 🧬 중복 검사 (Duplicate Check)
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
- **처리 방식:** UPDATE (자동 정규화)
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
## 🕓 변경 이력 (Changelog)
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|------|-----------|-----------|--------|
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
## 💻 코드 패턴 (Code Patterns)
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
```text
# TODO
```
## 🤔 의사결정 기준 (Decision Criteria)
**선택 A를 써야 할 때:**
- *(TODO)*
**선택 B를 써야 할 때:**
- *(TODO)*
**기본값:**
> *(TODO)*
## ❌ 안티패턴 (Anti-Patterns)
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*