--- id: FE-DEBUG-[[memory|memory]]-001 category: "10_Wiki/πŸ’‘ Topics/AI" confidence_score: 1.0 tags: [[JavaScript|[JavaScript]], performance, debugging, memory-leak, heap-snapshot, devtools, [[Chrome|Chrome]]] last_reinforced: 2026-04-26 --- # Memory Leak Debugging in JavaScript (μžλ°”μŠ€ν¬λ¦½νŠΈ λ©”λͺ¨λ¦¬ λˆ„μˆ˜ 디버깅) ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > "더 이상 ν•„μš”ν•˜μ§€ μ•Šμ€ 데이터가 κ°€λΉ„μ§€ 컬렉터(GC)에 μ˜ν•΄ νšŒμˆ˜λ˜μ§€ μ•Šκ³  μ μœ λ˜λŠ” ν˜„μƒμ„ μΆ”μ ν•˜κ³ , λΈŒλΌμš°μ € νž™(Heap)의 비정상적 λΉ„λŒ€λ₯Ό 사전에 μ°¨λ‹¨ν•˜μ—¬ λŸ°νƒ€μž„ μ•ˆμ •μ„±μ„ ν™•λ³΄ν•˜λΌ" β€” μž₯κΈ° μ„Έμ…˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ„±λŠ₯ μ €ν•˜μ™€ ν¬λž˜μ‹œλ₯Ό λ°©μ§€ν•˜λŠ” κ³ λ„μ˜ 디버깅 기술. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) - **μΆ”μΆœλœ νŒ¨ν„΄:** "Snapshot Comparison and [[Reference|Reference]] Tracking" β€” νŠΉμ • μ‹œμ μ˜ λ©”λͺ¨λ¦¬ μŠ€λƒ…μƒ·μ„ λΉ„κ΅ν•˜μ—¬ ν•΄μ œλ˜μ§€ μ•Šμ€ 객체와 κ·Έ μ°Έμ‘° 경둜λ₯Ό μ‹λ³„ν•˜λŠ” νŒ¨ν„΄. - **μ£Όμš” 원인 및 ν•΄κ²°μ±…:** - **Global Variables:** μ˜λ„μΉ˜ μ•Šκ²Œ μ „μ—­ 객체에 ν• λ‹Ήλœ λ³€μˆ˜ 제거. - **Forgotten Timers/Listeners:** μ»΄ν¬λ„ŒνŠΈ μ–Έλ§ˆμš΄νŠΈ μ‹œ `clearTimeout`μ΄λ‚˜ `removeEventListener`λ₯Ό ν˜ΈμΆœν•˜μ§€ μ•Šμ•„ λ°œμƒν•˜λŠ” λˆ„μˆ˜. - **Closures:** μƒμœ„ μŠ€μ½”ν”„μ˜ λ³€μˆ˜λ₯Ό λΆˆν•„μš”ν•˜κ²Œ 였래 μ μœ ν•˜λŠ” ν΄λ‘œμ € 식별. - **Detached DOM Nodes:** DOMμ—μ„œλŠ” μ‚­μ œλ˜μ—ˆμœΌλ‚˜ JS λ³€μˆ˜κ°€ μ°Έμ‘°ν•˜κ³  μžˆμ–΄ λ©”λͺ¨λ¦¬μ— λ‚¨μ•„μžˆλŠ” λ…Έλ“œ 제거. - **디버깅 도ꡬ ν™œμš©:** - **[[Chrome DevTools|Chrome DevTools]] Memory Tab:** [[Heap Snapshot|Heap Snapshot]]을 찍어 객체 수 증가 좔이 확인. - **Allocation Instrumentation on Timeline:** λ©”λͺ¨λ¦¬ 할당이 λ°œμƒν•˜λŠ” μ‹œμ  μ‹€μ‹œκ°„ κ΄€μΈ‘. - **Performance Monitor:** CPU와 λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰ μ‹€μ‹œκ°„ λͺ¨λ‹ˆν„°λ§. - **의의:** μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 점진적 속도 μ €ν•˜(Sluggishness)λ₯Ό λ°©μ§€ν•˜κ³ , μ‚¬μš©μžμ—κ²Œ μΌκ΄€λœ μΎŒμ ν•¨μ„ μ œκ³΅ν•¨. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & RL Update) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** κ³Όκ±°μ—λŠ” λ©”λͺ¨λ¦¬ λˆ„μˆ˜λ₯Ό λ“œλ¬Έ ν˜„μƒμœΌλ‘œ μ—¬κ²ΌμœΌλ‚˜, ν˜„λŒ€μ˜ λ³΅μž‘ν•œ SPA ν™˜κ²½μ—μ„œλŠ” μ„Έμ…˜μ΄ 길어짐에 따라 'λˆ„μ λ˜λŠ” λˆ„μˆ˜ μ •μ±…'이 μ‹¬κ°ν•œ μ‚¬μš©μž κ²½ν—˜ μ €ν•˜λ₯Ό μœ λ°œν•¨. - **μ •μ±… λ³€ν™”:** Antigravity ν”„λ‘œμ νŠΈλŠ” λͺ¨λ“  λ³΅μž‘ν•œ μœ„μ ―(차트, 에디터 λ“±) 개발 μ‹œ μ–Έλ§ˆμš΄νŠΈ ν›„ λ©”λͺ¨λ¦¬ μž”λ₯˜ μ—¬λΆ€ ν…ŒμŠ€νŠΈλ₯Ό ν•„μˆ˜ μ •μ±…μœΌλ‘œ ν•˜λ©°, λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰μ΄ μž„κ³„μΉ˜ 이상 μƒμŠΉν•  경우 μžλ™ κ²½κ³  정책을 μ‹œν–‰ν•¨. ## πŸ”— 지식 μ—°κ²° (Graph) - [[Frontend-Debugging-and-Testing|Frontend-Debugging-and-Testing]], JavaScript-Optimization-Patterns, [[React-Error-Boundaries-and-Handling|React-Error-Boundaries-and-Handling]], [[Frontend-Performance-Optimization-Guide|Frontend-Performance-Optimization-Guide]] - **Raw Source:** 00_Raw/Memory Leak Debugging.md