# [[Garbage Collection]] ## πŸ“Œ Brief Summary κ°€λΉ„μ§€ μ»¬λ ‰μ…˜(Garbage Collection)은 μžλ°”μŠ€ν¬λ¦½νŠΈ μ—”μ§„κ³Ό λΈŒλΌμš°μ €κ°€ 더 이상 ν•„μš”ν•˜μ§€ μ•Šμ€ λ©”λͺ¨λ¦¬λ₯Ό μžλ™μœΌλ‘œ νšŒμˆ˜ν•˜λŠ” ν”„λ‘œμ„ΈμŠ€μž…λ‹ˆλ‹€ [1, 2]. νŽ˜μ΄μ§€μ˜ DOM νŠΈλ¦¬λ‚˜ μžλ°”μŠ€ν¬λ¦½νŠΈ μ½”λ“œμ—μ„œ μ–΄λ– ν•œ 참쑰도 λ‚¨μ•„μžˆμ§€ μ•Šμ€ κ°μ²΄λ‚˜ λ…Έλ“œλ§Œμ΄ κ°€λΉ„μ§€ μ»¬λ ‰μ…˜μ˜ λŒ€μƒμ΄ λ©λ‹ˆλ‹€ [2, 3]. λΈŒλΌμš°μ €κ°€ κ°€λΉ„μ§€ μ»¬λ ‰μ…˜μ„ μˆ˜ν–‰ν•˜λŠ” λ™μ•ˆμ—λŠ” λͺ¨λ“  슀크립트 싀행이 μΌμ‹œ μ€‘μ§€λ˜λ―€λ‘œ, 이 μž‘μ—…μ΄ λ„ˆλ¬΄ λΉˆλ²ˆν•˜κ²Œ λ°œμƒν•˜λ©΄ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μž¦μ€ λ©ˆμΆ€μ΄λ‚˜ μ„±λŠ₯ 지연을 μœ λ°œν•  수 μžˆμŠ΅λ‹ˆλ‹€ [1]. ## πŸ“– Core Content * **κ°€λΉ„μ§€ μ»¬λ ‰μ…˜κ³Ό λ©”λͺ¨λ¦¬ λˆ„μˆ˜(Memory Leak):** μžλ°”μŠ€ν¬λ¦½νŠΈ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ κ°€λΉ„μ§€ μ»¬λ ‰ν„°λŠ” μ°Έμ‘°λ˜μ§€ μ•ŠλŠ” λ©”λͺ¨λ¦¬λ§Œ νšŒμˆ˜ν•©λ‹ˆλ‹€ [2]. λ§Œμ•½ ν™”λ©΄(DOM 트리)μ—μ„œλŠ” μ œκ±°λ˜μ—ˆμ§€λ§Œ μžλ°”μŠ€ν¬λ¦½νŠΈ λ³€μˆ˜λ‚˜ ν΄λ‘œμ € 등에 μ˜ν•΄ μ—¬μ „νžˆ 참쑰되고 μžˆλŠ” 'λΆ„λ¦¬λœ DOM λ…Έλ“œ(Detached DOM nodes)'κ°€ μžˆλ‹€λ©΄, κ°€λΉ„μ§€ μ»¬λ ‰ν„°λŠ” 이λ₯Ό νšŒμˆ˜ν•  수 μ—†μ–΄ λ©”λͺ¨λ¦¬ λˆ„μˆ˜κ°€ λ°œμƒν•˜κ²Œ λ©λ‹ˆλ‹€ [3, 4]. * **μ„±λŠ₯ 문제 식별:** κ°€λΉ„μ§€ μ»¬λ ‰μ…˜μ΄ μ§„ν–‰λ˜λŠ” λ™μ•ˆμ—λŠ” 슀크립트 싀행이 λ©ˆμΆ”κΈ° λ•Œλ¬Έμ— μž¦μ€ κ°€λΉ„μ§€ μ»¬λ ‰μ…˜μ€ UX에 μ•…μ˜ν–₯을 λ―ΈμΉ©λ‹ˆλ‹€ [1]. Chrome μž‘μ—… κ΄€λ¦¬μžλ‚˜ νƒ€μž„λΌμΈ λ©”λͺ¨λ¦¬ κΈ°λ‘μ—μ„œ λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰μ΄ κ³„μ†ν•΄μ„œ λΉ λ₯΄κ²Œ 였λ₯΄λ‚΄λ¦¬λŠ”(rising and falling) νŒ¨ν„΄μ΄ λ‚˜νƒ€λ‚œλ‹€λ©΄, κ°€λΉ„μ§€ μ»¬λ ‰μ…˜μ΄ λ„ˆλ¬΄ 자주 λ°œμƒν•˜κ³  μžˆλ‹€λŠ” μ‹ ν˜Έμž…λ‹ˆλ‹€ [5]. * **디버깅 및 λͺ¨λ‹ˆν„°λ§ 기법:** Chrome DevToolsλ₯Ό μ‚¬μš©ν•˜μ—¬ λ©”λͺ¨λ¦¬ 문제λ₯Ό 좔적할 λ•Œ, 기둝을 μ‹œμž‘ν•˜κ³  끝낼 λ•Œ κ°€λΉ„μ§€ μ»¬λ ‰μ…˜μ„ κ°•μ œλ‘œ μ‹€ν–‰ν•˜λŠ” 것이 쒋은 μŠ΅κ΄€μž…λ‹ˆλ‹€ [6]. λ©”λͺ¨λ¦¬ νƒ­μ—μ„œ 'νœ΄μ§€ν†΅(Collect garbage)' μ•„μ΄μ½˜μ„ ν΄λ¦­ν•˜μ—¬ κ°€λΉ„μ§€ μ»¬λ ‰μ…˜μ„ μˆ˜λ™μœΌλ‘œ νŠΈλ¦¬κ±°ν•  수 있으며, Chrome을 `--expose-gc` ν”Œλž˜κ·Έμ™€ ν•¨κ»˜ μ‹€ν–‰ν–ˆλ‹€λ©΄ μ½˜μ†”μ—μ„œ `window.gc()`λ₯Ό ν˜ΈμΆœν•˜μ—¬ ν”„λ‘œκ·Έλž˜λ° λ°©μ‹μœΌλ‘œλ„ κ°•μ œ μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [6-8]. * **예방 및 μ΅œμ ν™” μ „λž΅:** λ©”λͺ¨λ¦¬κ°€ μ •μƒμ μœΌλ‘œ κ°€λΉ„μ§€ μ»¬λ ‰μ…˜λ˜λ„λ‘ ν•˜λ €λ©΄ μ μ ˆν•œ 자료ꡬ쑰λ₯Ό 선택해야 ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, 객체 μΊμ‹œλ₯Ό 관리할 λ•ŒλŠ” 일반 객체 λŒ€μ‹  `WeakMap`을 μ‚¬μš©ν•˜λ©΄ μ°Έμ‘°κ°€ κ°€λΉ„μ§€ μ»¬λ ‰μ…˜μ„ λ°©ν•΄ν•˜μ§€ μ•Šκ²Œ ν•˜μ—¬ λ©”λͺ¨λ¦¬ λˆ„μˆ˜λ₯Ό μ˜ˆλ°©ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [9]. ## πŸ”— Knowledge Connections - **Related Topics:** [[Memory Leak]], [[Chrome DevTools]], [[Performance Optimization]], [[Detached DOM Nodes]] - **Projects/Contexts:** [[Frontend Debugging]], [[JavaScript Memory Management]] - **Contradictions/Notes:** μ†ŒμŠ€ κ°„μ˜ λͺ¨μˆœλœ μ£Όμž₯은 μ—†μœΌλ©°, 제곡된 μ†ŒμŠ€λ“€μ€ κ³΅ν†΅μ μœΌλ‘œ ν”„λ‘ νŠΈμ—”λ“œ μ„±λŠ₯ μ΅œμ ν™”μ™€ λ©”λͺ¨λ¦¬ λˆ„μˆ˜ λ°©μ§€λ₯Ό μœ„ν•΄ κ°€λΉ„μ§€ μ»¬λ ‰μ…˜ λ©”μ»€λ‹ˆμ¦˜μ„ μ΄ν•΄ν•˜κ³  Chrome DevToolsλ₯Ό 톡해 적극적으둜 λͺ¨λ‹ˆν„°λ§ν•  것을 κ°•μ‘°ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. --- *Last updated: 2026-04-26*