--- id: P-REINFORCE-AUTO-6488F2 category: "10_Wiki/πŸ’‘ Topics/Programming & Language" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - μ˜€λ¦¬λ…Έμ½”(Orinoco GC)" --- # [[오라노코(Orinoco GC)|μ˜€λ¦¬λ…Έμ½”(Orinoco GC)]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > μ˜€λ¦¬λ…Έμ½”(Orinoco)λŠ” V8 μ—”μ§„μ˜ κ°€λΉ„μ§€ 컬렉터(GC)λ₯Ό κ°œμ„ ν•˜κΈ° μœ„ν•œ ν”„λ‘œμ νŠΈμ˜ μ½”λ“œλͺ…μœΌλ‘œ, 기쑴의 순차적인 'Stop-the-world' λ°©μ‹μ˜ κ°€λΉ„μ§€ 컬렉터λ₯Ό 병렬(Parallel), λ™μ‹œ(Concurrent), 점진적(Incremental) 처리 기법을 μ μš©ν•˜μ—¬ μƒˆλ‘­κ²Œ νƒˆλ°”κΏˆμ‹œμΌ°μŠ΅λ‹ˆλ‹€ [1, 2]. 이 ν”„λ‘œμ νŠΈμ˜ μ£Όμš” λͺ©μ μ€ 메인 μŠ€λ ˆλ“œμ˜ λΆ€ν•˜λ₯Ό 쀄이고 GC둜 μΈν•œ μΌμ‹œ μ •μ§€(Pause) μ‹œκ°„μ„ μ΅œμ†Œν™”ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€ [2]. 이λ₯Ό 톡해 μ• λ‹ˆλ©”μ΄μ…˜, 슀크둀, μ‚¬μš©μž μƒν˜Έμž‘μš©μ˜ μ§€μ—° μ‹œκ°„μ„ 쀄이고 μ „λ°˜μ μΈ ν”„λ‘œκ·Έλž¨ μ²˜λ¦¬λŸ‰κ³Ό μ„±λŠ₯을 ν–₯μƒμ‹œν‚΅λ‹ˆλ‹€ [3, 4]. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) μ˜€λ¦¬λ…Έμ½” κ°€λΉ„μ§€ μ»¬λ ‰ν„°λŠ” 메인 μŠ€λ ˆλ“œλ₯Ό ν•΄λ°©μ‹œν‚€κ³  μΌμ‹œ μ •μ§€ μ‹œκ°„μ„ 쀄이기 μœ„ν•΄ λ‹€μŒκ³Ό 같은 μ„Έ κ°€μ§€ 핡심 기법과 λ‹€μ–‘ν•œ μ΅œμ ν™”λ₯Ό λ„μž…ν–ˆμŠ΅λ‹ˆλ‹€ [2]. * **병렬(Parallel) 처리:** 메인 μŠ€λ ˆλ“œμ™€ μ—¬λŸ¬ 헬퍼 μŠ€λ ˆλ“œκ°€ λ™μ‹œμ— 같은 μ–‘μ˜ GC μž‘μ—…μ„ λ‚˜λˆ„μ–΄ μˆ˜ν–‰ν•˜λŠ” λ°©μ‹μž…λ‹ˆλ‹€ [2]. 이 방식은 μ—¬μ „νžˆ 'Stop-the-world' ν˜•νƒœλ₯Ό λ μ§€λ§Œ, μ°Έμ—¬ν•˜λŠ” μŠ€λ ˆλ“œ 수만큼 총 μΌμ‹œ μ •μ§€ μ‹œκ°„μ„ λΆ„ν• ν•˜μ—¬ λ‹¨μΆ•μ‹œν‚΅λ‹ˆλ‹€ [2]. 특히 동적 μž‘μ—… ν›”μΉ˜κΈ°(Dynamic work stealing) μ•Œκ³ λ¦¬μ¦˜μ„ μ‚¬μš©ν•˜λŠ” μƒˆλ‘œμš΄ '병렬 μŠ€μΊλΉˆμ €(Parallel Scavenger)'λ₯Ό λ„μž…ν•˜μ—¬, 메인 μŠ€λ ˆλ“œμ˜ μ Šμ€ μ„ΈλŒ€(Young generation) GC μ†Œμš” μ‹œκ°„μ„ μž‘μ—… λΆ€ν•˜μ— 따라 20%~50%κΉŒμ§€ κ°μ†Œμ‹œμΌ°μŠ΅λ‹ˆλ‹€ [4-6]. * **점진적(Incremental) 처리:** 메인 μŠ€λ ˆλ“œκ°€ 전체 GC μž‘μ—…μ„ ν•œ λ²ˆμ— μ²˜λ¦¬ν•˜μ§€ μ•Šκ³ , μž‘μ€ 쑰각으둜 λ‚˜λˆ„μ–΄ JavaScript μ‹€ν–‰ 사이사이에 κ°„ν—μ μœΌλ‘œ μˆ˜ν–‰ν•˜λŠ” λ°©μ‹μž…λ‹ˆλ‹€ [7]. 이 방식은 GC에 μ†Œμš”λ˜λŠ” 총 μ‹œκ°„μ„ μ€„μ΄μ§€λŠ” λͺ»ν•˜μ§€λ§Œ μž‘μ—…μ„ μ‹œκ°„ λ‹¨μœ„λ‘œ λΆ„μ‚°μ‹œμΌœ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ‚¬μš©μž μž…λ ₯μ΄λ‚˜ μ• λ‹ˆλ©”μ΄μ…˜ λ Œλ”λ§μ— 계속 λ°˜μ‘ν•  수 있게 ν•΄μ€λ‹ˆλ‹€ [7]. * **λ™μ‹œ(Concurrent) 처리:** 메인 μŠ€λ ˆλ“œκ°€ JavaScriptλ₯Ό μ§€μ†μ μœΌλ‘œ μ‹€ν–‰ν•˜λŠ” λ™μ•ˆ, 헬퍼 μŠ€λ ˆλ“œλ“€μ΄ λ°±κ·ΈλΌμš΄λ“œμ—μ„œ μ™„μ „νžˆ λ…λ¦½μ μœΌλ‘œ GC μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” κΈ°μˆ μž…λ‹ˆλ‹€ [8]. νž™(Heap)의 μƒνƒœκ°€ μ–Έμ œλ“  λ³€ν•  수 μžˆμ–΄ 동기화 및 읽기/μ“°κΈ° 좩돌(Race condition) 문제λ₯Ό ν•΄κ²°ν•΄μ•Ό ν•˜λŠ” κ°€μž₯ μ–΄λ €μš΄ κΈ°μˆ μ΄μ§€λ§Œ, 메인 μŠ€λ ˆλ“œλ₯Ό μ™„μ „νžˆ 자유둭게 ν•΄μ€€λ‹€λŠ” 큰 μž₯점이 μžˆμŠ΅λ‹ˆλ‹€ [8]. V8의 메이저 GC(Major GC)λŠ” 이 기법을 ν™œμš©ν•˜μ—¬ λ°±κ·ΈλΌμš΄λ“œμ—μ„œ λ™μ‹œ λ§ˆν‚Ή(Concurrent marking)κ³Ό λ™μ‹œ μŠ€μœ„ν•‘(Concurrent sweeping)을 μˆ˜ν–‰ν•©λ‹ˆλ‹€ [9, 10]. * **μΆ”κ°€ μ΅œμ ν™” ꡬ쑰:** μ˜€λ¦¬λ…Έμ½”λŠ” νž™ λ©”λͺ¨λ¦¬λ₯Ό κ³ μ • 크기의 'νŽ˜μ΄μ§€(Pages)'둜 λΆ„ν• ν•˜κ³ , νŽ˜μ΄μ§€ μˆ˜μ€€μ—μ„œ 볡사 및 μ••μΆ•(Compaction) μž‘μ—…μ„ λ³‘λ ¬ν™”ν•˜μ—¬ μ••μΆ• μ‹œκ°„μ„ 75% κ°μ†Œμ‹œμΌ°μŠ΅λ‹ˆλ‹€ [6]. λ˜ν•œ, κ°€λΉ„μ§€ μ»¬λ ‰μ…˜ 쀑 객체 이동에 λ”°λ₯Έ 포인터 μ—…λ°μ΄νŠΈ 속도λ₯Ό 높이기 μœ„ν•΄ νŠΉμ • νŽ˜μ΄μ§€μ—μ„œ λ°œμƒν•˜λŠ” '관심 포인터(Interesting pointers)'λ₯Ό μΆ”μ ν•˜λŠ” κΈ°μ–΅ μ§‘ν•©(Remembered set)을 ν™œμš©ν•©λ‹ˆλ‹€ [11]. 였래된 μ„ΈλŒ€(Old generation)에 졜근 ν• λ‹Ήλœ κ°μ²΄λŠ” λ‹€μŒ GCμ—μ„œ 생쑴할 κ°€λŠ₯성이 λ†’λ‹€κ³  κ°€μ •ν•˜μ—¬ λΈ”λž™ νŽ˜μ΄μ§€μ— ν• λ‹Ήν•˜κ³  μŠ€μœ„ν•‘μ„ μƒλž΅ν•˜λŠ” 'λΈ”λž™ ν• λ‹Ή(Black allocation)' 기법도 λ„μž…ν–ˆμŠ΅λ‹ˆλ‹€ [12]. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & RL Update) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** μžλ™ν™” 엔진에 μ˜ν•΄ λ§€ν•‘λœ μ§€μ‹μœΌλ‘œ, μΆ”ν›„ μ •λ°€ 검증 ν•„μš”. - **μ •μ±… λ³€ν™”:** Programming & Language λΆ„μ•Όμ˜ μžλ™ μžμ‚°ν™” μˆ˜ν–‰. ## πŸ”— 지식 μ—°κ²° (Graph) - **Related Topics:** [[α„€α…‘α„‡α…΅α„Œα…΅ ᄏα…₯ᆯ렉ᄐα…₯(Garbage Collector)|κ°€λΉ„μ§€ 컬렉터(Garbage Collector)]], [[V8 α„‹α…¦α†«α„Œα…΅α†«(V8 Engine)|V8 μ—”μ§„(V8 Engine)]], [[ᄆᅑ크-스위프(Mark-Sweep)|마크-μŠ€μœ„ν”„(Mark-Sweep)]], [[α„‰α…³α„α…’α„‡α…΅α†«α„Œα…₯(Scavenger)|μŠ€μΊλΉˆμ €(Scavenger)]], [[Stop-the-world|Stop-the-world]] - **Projects/Contexts:** [[JavaScript 메모라 α„€α…ͺᆫ라(JavaScript Memory Management)|JavaScript λ©”λͺ¨λ¦¬ 관리(JavaScript Memory Management)]] - **Contradictions/Notes:** 점진적(Incremental) GC 기법은 메인 μŠ€λ ˆλ“œμ˜ 응닡성을 높이고 μ§€μ—°(Latency) 문제λ₯Ό ν•΄κ²°ν•˜λŠ” λ°μ—λŠ” νš¨κ³Όμ μ΄μ§€λ§Œ, 메인 μŠ€λ ˆλ“œμ—μ„œ μ†ŒλΉ„λ˜λŠ” 총 μ‹œκ°„ 자체λ₯Ό μ€„μ—¬μ£Όμ§€λŠ” μ•ŠμœΌλ©° 였히렀 μž‘μ—… λΆ„μ‚°μœΌλ‘œ 인해 μ•½κ°„ μ¦κ°€μ‹œν‚¬ 수 μžˆλ‹€κ³  μ†ŒμŠ€λŠ” μ§€μ ν•©λ‹ˆλ‹€ [7]. --- *Last updated: 2026-04-19* - Raw Source: 00_Raw/2026-04-20/μ˜€λ¦¬λ…Έμ½”(Orinoco GC).md ---