--- category: Unified tags: [auto-consolidated, technical-documentation] title: [[Allocation Timeline|Allocation Timeline]] last_updated: 2026-05-02 --- # [[Allocation Timeline|Allocation Timeline]] ## πŸ“Œ Brief Summary > **Allocation Timeline**(λ˜λŠ” Allocation instrumentation on timeline)은 [[Chrome DevTools|Chrome DevTools]]의 Memory νŒ¨λ„μ—μ„œ μ œκ³΅ν•˜λŠ” ν”„λ‘œνŒŒμΌλ§ λ„κ΅¬λ‘œ, μ‹œκ°„ 경과에 λ”°λ₯Έ λ©”λͺ¨λ¦¬ 할당을 κΈ°λ‘ν•˜κ³  μΆ”μ ν•˜μ—¬ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ λ©”λͺ¨λ¦¬ λˆ„μˆ˜λ₯Ό μ§„λ‹¨ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ [1-3]. 이 λ„κ΅¬λŠ” νž™ ν”„λ‘œνŒŒμΌλŸ¬(Heap Profiler)의 μƒμ„Έν•œ μŠ€λƒ…μƒ· 정보와 νƒ€μž„λΌμΈ νŒ¨λ„μ˜ 증뢄 μ—…λ°μ΄νŠΈ 및 좔적 κΈ°λŠ₯을 κ²°ν•©ν•˜μ—¬ 객체의 생성 μœ„μΉ˜μ™€ μœ μ§€ 경둜([[Retaining Path|Retaining Path]])λ₯Ό μ‹€μ‹œκ°„μœΌλ‘œ 식별할 수 있게 ν•΄μ€λ‹ˆλ‹€ [2, 4, 5]. --- > ν• λ‹Ή νƒ€μž„λΌμΈ(Allocation Timeline)은 νž™ ν”„λ‘œνŒŒμΌλŸ¬μ˜ μƒμ„Έν•œ μŠ€λƒ…μƒ· 정보와 νƒ€μž„λΌμΈ νŒ¨λ„μ˜ 좔적 κΈ°λŠ₯을 κ²°ν•©ν•œ λ©”λͺ¨λ¦¬ ν”„λ‘œνŒŒμΌλ§ λ„κ΅¬μž…λ‹ˆλ‹€ [1, 2]. 이 λ„κ΅¬λŠ” λ…Ήν™” κΈ°κ°„ λ™μ•ˆ 주기적으둜 νž™ μŠ€λƒ…μƒ·μ„ μΊ‘μ²˜ν•˜μ—¬ 객체 ν• λ‹Ήκ³Ό κ°€λΉ„μ§€ μ»¬λ ‰μ…˜(GC) μ΄ν›„μ˜ 생쑴 μ—¬λΆ€λ₯Ό μ‹œκ°μ μœΌλ‘œ λ³΄μ—¬μ€λ‹ˆλ‹€ [3, 4]. 주둜 λ©”λͺ¨λ¦¬μ— 계속 남아 λˆ„μˆ˜λ₯Ό μΌμœΌν‚€λŠ” 객체λ₯Ό μ°Ύκ³ , ν•΄λ‹Ή 객체가 ν• λ‹Ήλœ μ •ν™•ν•œ μŠ€νƒ 트레이슀λ₯Ό μ‹λ³„ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ [1, 2, 5]. ## πŸ“– Core 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]. --- * **μž‘λ™ 방식 및 캑처 μ£ΌκΈ°:** ν• λ‹Ή νƒ€μž„λΌμΈμ€ 도ꡬ가 μ‹€ν–‰λ˜λŠ” λ™μ•ˆ 주기적으둜(μ΅œλŒ€ 50ms 간격) νž™ μŠ€λƒ…μƒ·μ„ 찍고, λ…Ήν™”κ°€ 끝날 λ•Œ μ΅œμ’… μŠ€λƒ…μƒ·μ„ ν•˜λ‚˜ 더 μΊ‘μ²˜ν•˜μ—¬ μ‹œκ°„ 경과에 λ”°λ₯Έ λ©”λͺ¨λ¦¬ 할당을 μ‹œκ°ν™”ν•©λ‹ˆλ‹€ [3, 4, 6]. νƒ€μž„λΌμΈ 상단에 λ‚˜νƒ€λ‚˜λŠ” λ§‰λŒ€κ·Έλž˜ν”„λŠ” νž™μ—μ„œ μƒˆλ‘œμš΄ 객체가 발견된 μ‹œμ μ„ λ‚˜νƒ€λ‚΄λ©°, λ§‰λŒ€μ˜ λ†’μ΄λŠ” ν• λ‹Ήλœ 객체의 전체 크기λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€ [6-8]. * **λ§‰λŒ€ 색상을 ν†΅ν•œ 생쑴(Liveness) νŒλ³„:** ν• λ‹Ή νƒ€μž„λΌμΈμ—μ„œ λ§‰λŒ€μ˜ 색상은 객체의 ν˜„μž¬ μƒνƒœλ₯Ό κ΅¬λΆ„ν•˜λŠ” 핡심 μ§€ν‘œμž…λ‹ˆλ‹€. * **νŒŒλž€μƒ‰ λ§‰λŒ€:** ν•΄λ‹Ή μ‹œκ°„λŒ€μ— ν• λ‹Ήλœ ν›„ μ΅œμ’… μŠ€λƒ…μƒ· μ§€μ κΉŒμ§€ λ©”λͺ¨λ¦¬μ— 살아남아 μžˆλŠ” 객체λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€ [5-8]. * **νšŒμƒ‰ λ§‰λŒ€:** ν•΄λ‹Ή μ‹œκ°„λŒ€μ— ν• λ‹Ήλ˜μ—ˆμœΌλ‚˜, 이후 κ°€λΉ„μ§€ 컬렉터(GC)에 μ˜ν•΄ μ •μƒμ μœΌλ‘œ 수거(Free)된 객체λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€ [5-9]. * κ°€λΉ„μ§€ μ»¬λ ‰μ…˜ 이후에도 사라지지 μ•Šκ³  λ‚¨μ•„μžˆλŠ” νŒŒλž€μƒ‰ λ§‰λŒ€λ“€μ€ 잠재적인 λ©”λͺ¨λ¦¬ λˆ„μˆ˜([[memory|memory]] Leak) 후보가 λ©λ‹ˆλ‹€ [9, 10]. * **μŠ€νƒ 트레이슀 및 원인 뢄석:** κ°œλ°œμžλŠ” νƒ€μž„λΌμΈμ—μ„œ νŠΉμ • μ‹œκ°„λŒ€λ₯Ό 마우슀둜 λ“œλž˜κ·Έν•˜μ—¬ ν™•λŒ€(Zoom in)ν•¨μœΌλ‘œμ¨, ν•΄λ‹Ή μ‹œκ°„ ν”„λ ˆμž„μ— ν• λ‹Ήλœ 객체만 ν‘œμ‹œλ˜λ„λ‘ μƒμ„±μž(Constructor) λͺ©λ‘μ„ 필터링할 수 μžˆμŠ΅λ‹ˆλ‹€ [5, 9, 11, 12]. νŠΉμ • 객체λ₯Ό μ„ νƒν•˜λ©΄ μœ μ§€ 경둜([[Retaining Path|Retaining Path]])와 ν• λ‹Ή μŠ€νƒ(Allocation stack) 탭을 톡해 ν•΄λ‹Ή 객체가 μ½”λ“œμ˜ μ–΄λŠ λΆ€λΆ„μ—μ„œ μƒμ„±λ˜μ—ˆκ³ , μ™œ GC에 μ˜ν•΄ μˆ˜κ±°λ˜μ§€ λͺ»ν–ˆλŠ”μ§€ κ·Έ 원인을 μ •ν™•νžˆ 좔적할 수 μžˆμŠ΅λ‹ˆλ‹€ [5, 11, 13, 14]. * **고유 객체 μ‹λ³„μž μœ μ§€:** κ°€λΉ„μ§€ μ»¬λ ‰μ…˜μ΄ λ°œμƒν•˜λ©΄ 객체의 물리적 λ©”λͺ¨λ¦¬ μ£Όμ†Œκ°€ 이동할 수 있기 λ•Œλ¬Έμ—, λ„κ΅¬λŠ” μ£Όμ†Œ λŒ€μ‹  영ꡬ적인 객체 ID(예: `@` λ’€μ˜ 숫자)λ₯Ό λΆ€μ—¬ν•©λ‹ˆλ‹€ [3, 4]. 이 IDλŠ” λ…Ήν™” μ„Έμ…˜ 쀑 캑처된 μ—¬λŸ¬ μŠ€λƒ…μƒ· 간에 μœ μ§€λ˜λ―€λ‘œ νŠΉμ • 객체의 νž™ μƒνƒœλ₯Ό μ •ν™•ν•˜κ²Œ 비ꡐ할 수 있게 ν•΄μ€λ‹ˆλ‹€ [3, 4, 15]. ## βš–οΈ Trade-offs & Caveats - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** 지식 μžμ‚°ν™” 및 κΈ°μ‘΄ λ„€νŠΈμ›Œν¬ 연동 단계. - **μ •μ±… λ³€ν™”:** Memory & Systems μΉ΄ν…Œκ³ λ¦¬μ˜ μ „λ¬Έμ„± 확보 및 링크 밀도 μ΅œμ ν™”. --- - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** μžλ™ν™” 엔진에 μ˜ν•΄ λ§€ν•‘λœ μ§€μ‹μœΌλ‘œ, μΆ”ν›„ μ •λ°€ 검증 ν•„μš”. - **μ •μ±… λ³€ν™”:** Programming & Language λΆ„μ•Όμ˜ μžλ™ μžμ‚°ν™” μˆ˜ν–‰. ## πŸ”— Knowledge Connections - **Related Topics:** [[Heap Snapshot|Heap Snapshot]], Garbage Collection, Memory Leak, Retaining Path, [[V8 Heap Architecture|V8 Heap Architecture]] - **Projects/Contexts:** [[Chrome DevTools|Chrome DevTools]], [[V8 Engine|V8 Engine]] - **Contradictions/Notes:** μ†ŒμŠ€ μ „λ°˜μ— 걸쳐 λ‚΄μš©μ˜ λͺ¨μˆœμ€ μ—†μŠ΅λ‹ˆλ‹€. λ‹€μ–‘ν•œ μ†ŒμŠ€κ°€ μΌκ΄€λ˜κ²Œ Allocation Timeline의 νŒŒλž€μƒ‰/νšŒμƒ‰ λ§‰λŒ€μ˜ μ˜λ―Έμ™€ λ©”λͺ¨λ¦¬ λˆ„μˆ˜λ₯Ό μΆ”μ ν•˜κΈ° μœ„ν•œ μŠ€νƒ 트레이슀 및 Retainer λΆ„μ„μ˜ μœ μš©μ„±μ„ κ°•μ‘°ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. --- *Last updated: 2026-04-19* --- --- - **Related Topics:** νž™ μŠ€λƒ…μƒ·([[Heap Snapshot|Heap Snapshot]]), κ°€λΉ„μ§€ μ»¬λ ‰μ…˜([[Garbage Collection|Garbage Collection]]), λ©”λͺ¨λ¦¬ λˆ„μˆ˜(Memory Leak) - **Projects/Contexts:** [[Chrome DevTools|Chrome DevTools]], Microsoft Edge DevTools - **Contradictions/Notes:** μ†ŒμŠ€ κ°„μ˜ λͺ¨μˆœλœ λ‚΄μš©μ€ μ—†μœΌλ©°, [[Chrome DevTools|Chrome DevTools]]와 Microsoft Edge DevTools λ“± [[Chromium|Chromium]] 기반 λΈŒλΌμš°μ € λ¬Έμ„œλ“€μ—μ„œ νŒŒλž€μƒ‰/νšŒμƒ‰ λ§‰λŒ€μ˜ μ˜λ―Έμ™€ λ„κ΅¬μ˜ μž‘λ™ 방식(50ms 주기의 μŠ€λƒ…μƒ· λ“±)을 λͺ¨λ‘ λ™μΌν•˜κ²Œ μ„€λͺ…ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€ [3, 4, 7, 8]. --- *Last updated: 2026-04-19* ---