--- id: P-REINFORCE-AUTO-D81993 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) > μž₯μ‹œκ°„ 켜져 μžˆμœΌλ©΄μ„œ λŒ€λŸ‰μ˜ 데이터λ₯Ό μ‹€μ‹œκ°„μœΌλ‘œ μ²˜λ¦¬ν•΄μ•Ό ν•˜λŠ” λŒ€μ‹œλ³΄λ“œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ **λ©”λͺ¨λ¦¬ λˆ„μˆ˜(Memory Leak) λ°©μ§€**와 **λ¦¬λ Œλ”λ§ 병λͺ© μ œμ–΄**κ°€ ν•΅μ‹¬μž…λ‹ˆλ‹€. 이λ₯Ό μœ„ν•΄ μƒνƒœ κ΄€λ¦¬μ˜ λ―Έμ„Έ μ‘°μ •, μ² μ €ν•œ 클린업, λŒ€κ·œλͺ¨ 리슀트 가상화, 그리고 무거운 μ—°μ‚°μ˜ μ›Ή μ›Œμ»€ μ˜€ν”„λ‘œλ”© 기법을 μ’…ν•©μ μœΌλ‘œ μ μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) **1. μ² μ €ν•œ 클린업을 ν†΅ν•œ λ©”λͺ¨λ¦¬ λˆ„μˆ˜(Memory Leak) λ°©μ§€** λŒ€μ‹œλ³΄λ“œκ°€ μž₯μ‹œκ°„ 싀행될 λ•Œ κ°€μž₯ μ£Όμ˜ν•΄μ•Ό ν•  점은 λ°±κ·ΈλΌμš΄λ“œμ— μŒ“μ΄λŠ” λ©”λͺ¨λ¦¬ λˆ„μˆ˜μž…λ‹ˆλ‹€. μ‹œκ°„μ΄ μ§€λ‚ μˆ˜λ‘ 앱이 λŠλ €μ§€κ³  κ²°κ΅­ ν¬λž˜μ‹œλ˜λŠ” ν˜„μƒμ„ λ§‰μœΌλ €λ©΄ λ‹€μŒμ„ λ°˜λ“œμ‹œ μ²˜λ¦¬ν•΄μ•Ό ν•©λ‹ˆλ‹€. - **μ‹€μ‹œκ°„ μ—°κ²° 및 타이머 ν•΄μ œ:** `useEffect` λ‚΄μ—μ„œ μ„€μ •ν•œ μ‹€μ‹œκ°„ λ°μ΄ν„°μš© μ›Ήμ†ŒμΌ“(WebSocket) μ—°κ²°μ΄λ‚˜ `setInterval` νƒ€μ΄λ¨ΈλŠ” μ»΄ν¬λ„ŒνŠΈκ°€ ν™”λ©΄μ—μ„œ μ‚¬λΌμ§ˆ λ•Œ(Unmount) λ°˜λ“œμ‹œ `ws.close()`λ‚˜ `clearInterval`을 ν˜ΈμΆœν•˜μ—¬ λͺ…μ‹œμ μœΌλ‘œ μ’…λ£Œν•΄μ•Ό ν•©λ‹ˆλ‹€. - **이벀트 λ¦¬μŠ€λ„ˆ 제거:** μ°½ 크기 쑰절(Resize) λ“±μ˜ 이벀트λ₯Ό λ“±λ‘ν–ˆλ‹€λ©΄ 클린업 ν•¨μˆ˜μ—μ„œ `window.removeEventListener`λ₯Ό ν˜ΈμΆœν•΄ ν•΄μ œν•΄μ•Ό ν•©λ‹ˆλ‹€. - **κ±°λŒ€ 객체 μ°Έμ‘° ν•΄μ œ:** 무거운 데이터 μ„ΈνŠΈλ₯Ό `useRef` λ“±μœΌλ‘œ μ°Έμ‘°ν•˜κ³  μžˆλ‹€λ©΄, μ‚¬μš©μ΄ λλ‚œ ν›„ μ°Έμ‘° λ³€μˆ˜μ— `null`을 ν• λ‹Ήν•˜μ—¬ κ°€λΉ„μ§€ 컬렉터(GC)κ°€ λ©”λͺ¨λ¦¬λ₯Ό νšŒμˆ˜ν•  수 μžˆλ„λ‘ λͺ…μ‹œμ μœΌλ‘œ 도와야 ν•©λ‹ˆλ‹€. **2. κ³ λΉˆλ„ μ—…λ°μ΄νŠΈλ₯Ό μœ„ν•œ μƒνƒœ 관리 μ΅œμ ν™”** μ‹€μ‹œκ°„ λŒ€μ‹œλ³΄λ“œμ—μ„œλŠ” 데이터가 μ΄ˆλ‹Ή μˆ˜μ‹­ λ²ˆμ”© μ—…λ°μ΄νŠΈλ  수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λ•Œ React의 κΈ°λ³Έ Context APIλ₯Ό μ‚¬μš©ν•˜λ©΄ λ‚΄λΆ€ 값이 ν•˜λ‚˜λ§Œ 변해도 이λ₯Ό κ΅¬λ…ν•˜λŠ” λͺ¨λ“  μ»΄ν¬λ„ŒνŠΈκ°€ λ¦¬λ Œλ”λ§λ˜λŠ” 폭포수 ν˜„μƒ(Cascading)이 λ°œμƒν•©λ‹ˆλ‹€. - μ΄λŸ¬ν•œ 병λͺ©μ„ 막기 μœ„ν•΄ **Zustand, Jotai, Valtio**와 같이 λ―Έμ„Έ μ‘°μ •(Fine-grained) μ—…λ°μ΄νŠΈλ₯Ό μ§€μ›ν•˜λŠ” μƒνƒœ 관리 라이브러리λ₯Ό λ„μž…ν•΄μ•Ό ν•©λ‹ˆλ‹€. - Zustand의 선택적 ꡬ독(Selector)을 ν™œμš©ν•˜κ±°λ‚˜ Jotai의 μ›μžμ (Atomic) μƒνƒœ λͺ¨λΈμ„ μ‚¬μš©ν•˜μ—¬ **μ‹€μ œ 데이터가 λ³€κ²½λœ UI μ»΄ν¬λ„ŒνŠΈλ§Œ μ •λ°€ν•˜κ²Œ λ¦¬λ Œλ”λ§λ˜λ„λ‘ 섀계**ν•˜λŠ” 것이 ν•„μˆ˜μ μž…λ‹ˆλ‹€. **3. λŒ€κ·œλͺ¨ 데이터 가상화 (Virtualization)** μ‹€μ‹œκ°„μœΌλ‘œ μŒ“μ΄λŠ” 수천 개의 λ‘œκ·Έλ‚˜ λŒ€κ·œλͺ¨ 데이터 ν…Œμ΄λΈ”μ„ ν•œ λ²ˆμ— λ Œλ”λ§ν•˜λ©΄ DOM λ…Έλ“œκ°€ ν­μ¦ν•˜μ—¬ λΈŒλΌμš°μ €κ°€ λ©ˆμΆ”κ²Œ λ©λ‹ˆλ‹€. - `react-window`λ‚˜ `react-virtualized`와 같은 가상화 라이브러리λ₯Ό μ‚¬μš©ν•˜μ—¬ **ν˜„μž¬ ν™”λ©΄(Viewport)에 λ³΄μ΄λŠ” ν•­λͺ©λ§Œ λ Œλ”λ§**ν•˜κ³  λ‚˜λ¨Έμ§€λŠ” 슀크둀 μ‹œ λ™μ μœΌλ‘œ λ§ˆμš΄νŠΈν•΄μ•Ό ν•©λ‹ˆλ‹€. 이λ₯Ό 톡해 λ Œλ”λ§ μ†Œμš” μ‹œκ°„μ„ 수 초 λ‹¨μœ„μ—μ„œ 수 λ°€λ¦¬μ΄ˆ(ms) λ‹¨μœ„λ‘œ 극적으둜 쀄일 수 μžˆμŠ΅λ‹ˆλ‹€. - λ˜ν•œ μž¦μ€ 이벀트(슀크둀, λ¦¬μ‚¬μ΄μ¦ˆ λ“±)μ—λŠ” **μŠ€λ‘œν‹€λ§(Throttling) 및 λ””λ°”μš΄μ‹±(Debouncing)**을 μ μš©ν•˜μ—¬ λΆˆν•„μš”ν•œ μ—°μ‚° λΆ€ν•˜λ₯Ό μ œμ–΄ν•΄μ•Ό ν•©λ‹ˆλ‹€. **4. 무거운 데이터 μ—°μ‚°μ˜ Web Worker μ˜€ν”„λ‘œλ”©** λŒ€μš©λŸ‰ JSON νŒŒμ‹±, λ³΅μž‘ν•œ 데이터 μ •λ ¬μ΄λ‚˜ 필터링 λ“± CPU 집약적인 μž‘μ—…μ€ μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ 메인 μŠ€λ ˆλ“œλ₯Ό μ°¨λ‹¨ν•˜μ—¬ λŒ€μ‹œλ³΄λ“œμ˜ UIλ₯Ό 먹톡(Freezing)으둜 λ§Œλ“­λ‹ˆλ‹€. - μ΄λŸ¬ν•œ μž‘μ—…μ€ **μ›Ή μ›Œμ»€(Web Worker)λ‚˜ `useWorker` 훅을 ν™œμš©ν•˜μ—¬ λ°±κ·ΈλΌμš΄λ“œ μŠ€λ ˆλ“œλ‘œ μ˜€ν”„λ‘œλ”©(Offloading)** ν•΄μ•Ό ν•©λ‹ˆλ‹€. μ΄λ ‡κ²Œ ν•˜λ©΄ λ³΅μž‘ν•œ 데이터 μ²˜λ¦¬κ°€ μ§„ν–‰λ˜λŠ” λ™μ•ˆμ—λ„ μ‚¬μš©μžλŠ” λŒ€μ‹œλ³΄λ“œμ™€ λŠκΉ€ 없이 μƒν˜Έμž‘μš©(60 FPS μœ μ§€)ν•  수 μžˆμŠ΅λ‹ˆλ‹€. **5. React λ™μ‹œμ„±(Concurrent) κΈ°λŠ₯ ν™œμš©** μ‹€μ‹œκ°„μœΌλ‘œ μŸμ•„μ§€λŠ” λŒ€κ·œλͺ¨ 데이터 λ Œλ”λ§ λ•Œλ¬Έμ— μ‚¬μš©μžμ˜ μž…λ ₯(검색어 타이핑, ν•„ν„° 클릭 λ“±)이 λ²„λ²…κ±°λ¦¬λŠ” 것을 막아야 ν•©λ‹ˆλ‹€. - React 18의 **`useTransition`**을 μ‚¬μš©ν•˜μ—¬ 무거운 μ°¨νŠΈλ‚˜ λͺ©λ‘μ˜ μ—…λ°μ΄νŠΈλ₯Ό λΉ„κΈ΄κΈ‰(Non-urgent) μž‘μ—…μœΌλ‘œ 미루고, μ‚¬μš©μžμ˜ 타이핑 같은 κΈ΄κΈ‰ν•œ μΈν„°λž™μ…˜μ„ μ¦‰κ°μ μœΌλ‘œ μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€. - **`useDeferredValue`**λ₯Ό ν™œμš©ν•˜λ©΄ κ°’μ˜ 계산을 μ§€μ—°μ‹œμΌœ 메인 μŠ€λ ˆλ“œμ˜ κ³ΌλΆ€ν•˜ μ‹œμ—λ„ UIκ°€ λΆ€λ“œλŸ½κ²Œ μœ μ§€λ˜λ„λ‘ μ œμ–΄ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & RL Update) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** μžλ™ν™” 엔진에 μ˜ν•΄ λ§€ν•‘λœ μ§€μ‹μœΌλ‘œ, μΆ”ν›„ μ •λ°€ 검증 ν•„μš”. - **μ •μ±… λ³€ν™”:** Programming & Language λΆ„μ•Όμ˜ μžλ™ μžμ‚°ν™” μˆ˜ν–‰. ## πŸ”— 지식 μ—°κ²° (Graph) - Raw Source: 00_Raw/2026-04-20/μž₯κΈ° μ‹€ν–‰λ˜λŠ” μ‹€μ‹œκ°„ 데이터 λŒ€μ‹œλ³΄λ“œ μ΅œμ ν™”.md ---