--- id: [[P-Reinforce]]-AUTO-921FA9 category: "10_Wiki/πŸ’‘ Topics/Programming & Language" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - μ›Ή ν”„λ‘ νŠΈμ—”λ“œ μ„±λŠ₯ μ΅œμ ν™”" --- # [[μ›Ή ν”„λ‘ νŠΈμ—”λ“œ μ„±λŠ₯ μ΅œμ ν™”]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > μ›Ή ν”„λ‘ νŠΈμ—”λ“œ μ„±λŠ₯ μ΅œμ ν™”λŠ” λΈŒλΌμš°μ € λ‚΄ [[JavaScript]] μ—”μ§„μ˜ λ©”λͺ¨λ¦¬ 관리 및 κ°€λΉ„μ§€ μ»¬λ ‰μ…˜(GC) νš¨μœ¨μ„ λ†’μ—¬ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ§€μ—°(Jank)μ΄λ‚˜ μΆ©λŒμ„ λ°©μ§€ν•˜λŠ” κ³Όμ •μž…λ‹ˆλ‹€ [1, 2]. κ°œλ°œμžλŠ” λ©”λͺ¨λ¦¬ λˆ„μˆ˜ 원인을 μ‹λ³„ν•˜κ³  이λ₯Ό ν•΄κ²°ν•˜μ—¬ λ Œλ”λ§ νŒŒμ΄ν”„λΌμΈκ³Ό 메인 μŠ€λ ˆλ“œ μ„±λŠ₯을 μ›ν™œν•˜κ²Œ μœ μ§€ν•΄μ•Ό ν•©λ‹ˆλ‹€ [2, 3]. 이λ₯Ό μœ„ν•΄ [[Chrome DevTools]]와 같은 ν”„λ‘œνŒŒμΌλ§ 도ꡬλ₯Ό 적극적으둜 ν™œμš©ν•˜μ—¬ λ©”λͺ¨λ¦¬ ν• λ‹Ήκ³Ό 객체 보쑴 μƒνƒœλ₯Ό 좔적할 수 μžˆμŠ΅λ‹ˆλ‹€ [4, 5]. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) * **λ©”λͺ¨λ¦¬ λˆ„μˆ˜ νŒ¨ν„΄ 및 원인 νŒŒμ•…** ν”„λ‘ νŠΈμ—”λ“œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ£Όμš” μ„±λŠ₯ μ €ν•˜ 원인은 더 이상 ν•„μš” μ—†λŠ” 객체가 κ°€λΉ„μ§€ 컬렉터에 μ˜ν•΄ νšŒμˆ˜λ˜μ§€ λͺ»ν•˜κ³  μ°Έμ‘°κ°€ μœ μ§€λ˜λŠ” λ©”λͺ¨λ¦¬ λˆ„μˆ˜μž…λ‹ˆλ‹€ [3, 6]. λŒ€ν‘œμ μΈ λˆ„μˆ˜ νŒ¨ν„΄μœΌλ‘œλŠ” λ¬Έμ„œμ—μ„œ μ œκ±°λ˜μ—ˆμœΌλ‚˜ JS λ³€μˆ˜μ— μ˜ν•΄ μ°Έμ‘°λ˜λŠ” λΆ„λ¦¬λœ DOM λ…Έλ“œ(Detached DOM nodes), 반볡적인 λ Œλ”λ§ μ£ΌκΈ°μ—μ„œ λˆ„μ λ˜λŠ” 이벀트 λ¦¬μŠ€λ„ˆ, 곡유 μŠ€μ½”ν”„μ— μ˜ν•΄ μœ μ§€λ˜λŠ” ν΄λ‘œμ €, 그리고 λŒ€μƒμ΄ μ œκ±°λ˜μ—ˆμŒμ—λ„ 연결이 λŠκΈ°μ§€ μ•Šμ€ 타이머(setInterval)와 μ˜΅μ €λ²„ 등이 μžˆμŠ΅λ‹ˆλ‹€ [7-9]. 특히 단일 νŽ˜μ΄μ§€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜(SPA)의 라우트 μ „ν™˜μ€ 이전 라우트의 λ¦¬μŠ€λ„ˆλ‚˜ μ „μ—­ μƒνƒœ μ°Έμ‘°λ₯Ό μ œλŒ€λ‘œ μ •λ¦¬ν•˜μ§€ μ•Šμ„ 경우 κ°€μž₯ λΉˆλ²ˆν•œ λˆ„μˆ˜ 원인이 λ©λ‹ˆλ‹€ [10]. * **[[Chrome]] DevToolsλ₯Ό μ΄μš©ν•œ 진단 및 ν”„λ‘œνŒŒμΌλ§** λ©”λͺ¨λ¦¬ λˆ„μˆ˜μ™€ μ„±λŠ₯ 병λͺ©μ„ λΆ„μ„ν•˜κΈ° μœ„ν•΄ Chrome DevTools의 λ‹€μ–‘ν•œ κΈ°λŠ₯이 μ‚¬μš©λ©λ‹ˆλ‹€ [5]. '[[Heap Snapshot]]'을 톡해 νŠΉμ • μ‹œμ μ˜ 전체 λ©”λͺ¨λ¦¬ 객체 κ·Έλž˜ν”„λ₯Ό μΊ‘μ²˜ν•  수 있으며, 3개의 μŠ€λƒ…μƒ·μ„ λΉ„κ΅ν•˜λŠ” 기법(Three-snapshot technique)을 μ‚¬μš©ν•˜μ—¬ 1νšŒμ„± 할당을 ν•„ν„°λ§ν•˜κ³  μ§€μ†μ μœΌλ‘œ 살아남은 λˆ„μˆ˜ μ˜μ‹¬ 객체λ₯Ό 효과적으둜 찾을 수 μžˆμŠ΅λ‹ˆλ‹€ [4, 11]. λ˜ν•œ '[[Allocation Timeline]]'을 ν™œμš©ν•˜μ—¬ μ‹œκ°„μ— λ”°λ₯Έ 할당을 κΈ°λ‘ν•˜κ³  μŠ€νƒ 트레이슀λ₯Ό λΆ„μ„ν•¨μœΌλ‘œμ¨, λ©”λͺ¨λ¦¬λ₯Ό μ μœ ν•˜κ³  μžˆλŠ” 객체가 μƒμ„±λœ μ •ν™•ν•œ μ½”λ“œ μœ„μΉ˜λ₯Ό 좔적할 수 μžˆμŠ΅λ‹ˆλ‹€ [4, 5, 12]. * **κ°€λΉ„μ§€ μ»¬λ ‰μ…˜(GC) μ΅œμ ν™”μ— λ”°λ₯Έ μ„±λŠ₯ 영ν–₯** κ°€λΉ„μ§€ μ»¬λ ‰μ…˜μ΄ κ³Όλ„ν•˜κ²Œ μ‹€ν–‰λ˜κ±°λ‚˜ 였래 걸리면 μ˜ˆμΈ‘ν•  수 μ—†λŠ” 멈좀 ν˜„μƒ([[Stop-the-world]] pause)을 일으켜 μ• λ‹ˆλ©”μ΄μ…˜κ³Ό 같은 μΈν„°λž™ν‹°λΈŒ μ‹œμŠ€ν…œμ˜ μ‚¬μš©μž κ²½ν—˜μ„ λ°©ν•΄ν•˜κ²Œ λ©λ‹ˆλ‹€ [13, 14]. V8 엔진은 λŒ€λΆ€λΆ„μ˜ 객체가 생성 직후 μ“Έλͺ¨μ—†μ–΄μ§„λ‹€λŠ” 'μ„ΈλŒ€λ³„ κ°€μ„€([[Generational Hypothesis]])'에 κΈ°λ°˜ν•˜μ—¬ νž™ λ©”λͺ¨λ¦¬λ₯Ό κ΄€λ¦¬ν•©λ‹ˆλ‹€ [15, 16]. μ΅œμ‹  V8의 [[Orinoco]] ν”„λ‘œμ νŠΈλŠ” 병렬(Parallel), 점진적(Incremental), λ™μ‹œ(Concurrent) 기술 및 유휴 μ‹œκ°„(Idle-time) GCλ₯Ό λ„μž…ν•˜μ—¬ 메인 μŠ€λ ˆλ“œμ˜ 쀑단 μ‹œκ°„μ„ μ΅œμ†Œν™”ν•¨μœΌλ‘œμ¨ λΈŒλΌμš°μ €κ°€ μ΄ˆλ‹Ή 60ν”„λ ˆμž„ λ Œλ”λ§ λ“±μ˜ ν”„λ‘ νŠΈμ—”λ“œ μ„±λŠ₯을 μœ μ§€ν•  수 μžˆλ„λ‘ μ΅œμ ν™”ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€ [17-19]. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & RL Update) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** μžλ™ν™” 엔진에 μ˜ν•΄ λ§€ν•‘λœ μ§€μ‹μœΌλ‘œ, μΆ”ν›„ μ •λ°€ 검증 ν•„μš”. - **μ •μ±… λ³€ν™”:** Programming & Language λΆ„μ•Όμ˜ μžλ™ μžμ‚°ν™” μˆ˜ν–‰. ## πŸ”— 지식 μ—°κ²° (Graph) - **Related Topics:** `λ©”λͺ¨λ¦¬ λˆ„μˆ˜ ([[Memory Leaks]])`, `[[κ°€λΉ„μ§€ μ»¬λ ‰μ…˜ ([[Garbage Collection]])]]`, `V8 μ—”μ§„ ([[V8 Engine]])`, `[[Chrome DevTools]]`, `[[Orinoco]]` - **Projects/Contexts:** `SPA 라우트 μ „ν™˜ (SPA Route Transitions)`, `Three-snapshot technique`, `[[Allocation Timeline]]` - **Contradictions/Notes:** WeakRefλ‚˜ FinalizationRegistry와 같은 μ΅œμ‹  도ꡬ듀은 λ©”λͺ¨λ¦¬ λˆ„μˆ˜λ₯Ό μ€„μ΄λŠ” 데 도움을 쀄 수 μžˆμ§€λ§Œ, κ°€λΉ„μ§€ μ»¬λ ‰ν„°μ˜ 싀행이 자체적인 일정에 따라 비결정적(Non-deterministic)으둜 λ™μž‘ν•˜λ―€λ‘œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ μ ˆν•œ 수λͺ… μ£ΌκΈ° 관리(Lifecycle [[Management]])λ₯Ό μ™„μ „νžˆ λŒ€μ²΄ν•  μˆ˜λŠ” μ—†μŠ΅λ‹ˆλ‹€ [9]. --- *Last updated: 2026-04-19* ---