--- id: P-REINFORCE-AUTO-EED588 category: "[[10_Wiki/πŸ’‘ Topics/Programming & Language]]" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - 점진적 λ§ˆν‚Ή(Incremental marking)" --- # [[점진적 λ§ˆν‚Ή(Incremental marking)]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > 점진적 λ§ˆν‚Ή(Incremental marking)은 κ°€λΉ„μ§€ μ»¬λ ‰μ…˜(GC) κ³Όμ •μ—μ„œ λ°œμƒν•˜λŠ” κΈ΄ 쀑단 μ‹œκ°„(Stop-the-world)을 쀄이기 μœ„ν•΄ 전체 λ§ˆν‚Ή μž‘μ—…μ„ μ—¬λŸ¬ 개의 μž‘μ€ μΌμ‹œ μ •μ§€ κ΅¬κ°„μœΌλ‘œ λ‚˜λˆ„μ–΄ μ‹€ν–‰ν•˜λŠ” κΈ°λ²•μž…λ‹ˆλ‹€ [1-3]. μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 메인 μŠ€λ ˆλ“œ μ‹€ν–‰κ³Ό λ§ˆν‚Ή μž‘μ—…μ΄ ꡐ차둜 μ§„ν–‰λ˜λ―€λ‘œ νž™ 탐색 쀑에도 μ‚¬μš©μž μž…λ ₯ μ²˜λ¦¬λ‚˜ μ• λ‹ˆλ©”μ΄μ…˜ λ Œλ”λ§μ„ 계속할 수 μžˆμŠ΅λ‹ˆλ‹€ [2, 4]. 비둝 κ°€λΉ„μ§€ μ»¬λ ‰μ…˜μ— μ†ŒλΉ„λ˜λŠ” μ΄μ‹œκ°„μ„ μ€„μ—¬μ£Όμ§€λŠ” λͺ»ν•˜μ§€λ§Œ, μž‘μ—… μ‹œκ°„μ„ λΆ„μ‚°μ‹œν‚΄μœΌλ‘œμ¨ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ§€μ—° μ‹œκ°„(Latency)κ³Ό λ°˜μ‘μ„±μ„ 크게 κ°œμ„ ν•©λ‹ˆλ‹€ [2]. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) * **μž‘λ™ λ©”μ»€λ‹ˆμ¦˜ 및 ν™œμ„±ν™” 쑰건:** 점진적 λ§ˆν‚Ήμ€ νž™ 크기가 νŠΉμ • μž„κ³„κ°’μ— λ„λ‹¬ν•˜λ©΄ ν™œμ„±ν™”λ˜λ©°, 이후 μΌμ •λŸ‰μ˜ λ©”λͺ¨λ¦¬κ°€ 할당될 λ•Œλ§ˆλ‹€ 싀행이 μž μ‹œ μ€‘λ‹¨λ˜κ³  점진적 λ§ˆν‚Ή '단계(step)'κ°€ μˆ˜ν–‰λ©λ‹ˆλ‹€ [1, 3]. V8 μ—”μ§„μ—μ„œλŠ” λͺ¨λ°”일 κΈ°κΈ° κΈ°μ€€μœΌλ‘œ 각 μΌμ‹œ μ •μ§€ μ‹œκ°„μ΄ 5~10ms μˆ˜μ€€μœΌλ‘œ 맀우 짧게 μœ μ§€λ©λ‹ˆλ‹€ [1, 3]. 기본적으둜 깊이 μš°μ„  탐색(Depth-First-Search) μ•Œκ³ λ¦¬μ¦˜μ„ μ‚¬μš©ν•˜λ©°, 객체의 μƒνƒœλ₯Ό μ‹λ³„ν•˜κΈ° μœ„ν•΄ 흰색(미발견), νšŒμƒ‰(λ°œκ²¬λ˜μ—ˆμœΌλ‚˜ 이웃 미처리), 검은색(μ™„μ „ 처리됨)의 3색 λΆ„λ₯˜ μ‹œμŠ€ν…œμ„ μ‚¬μš©ν•©λ‹ˆλ‹€ [1]. * **객체 κ·Έλž˜ν”„ λ³€κ²½κ³Ό μ“°κΈ° μž₯λ²½(Write Barriers)의 μ—­ν• :** 점진적 λ§ˆν‚Ήμ˜ κ°€μž₯ 큰 νŠΉμ§•μ΄μž κ³Όμ œλŠ” λ§ˆν‚Ήμ΄ μ§„ν–‰λ˜λŠ” λ™μ•ˆ μžλ°”μŠ€ν¬λ¦½νŠΈκ°€ μ‹€ν–‰λ˜μ–΄ νž™ λ©”λͺ¨λ¦¬μ˜ 객체 κ·Έλž˜ν”„κ°€ μ§€μ†μ μœΌλ‘œ 변경될 수 μžˆλ‹€λŠ” μ μž…λ‹ˆλ‹€ [2, 5]. λ§Œμ•½ κ°€λΉ„μ§€ 컬렉터가 이미 탐색을 마친 '검은색' κ°μ²΄μ—μ„œ 아직 νƒμƒ‰λ˜μ§€ μ•Šμ€ '흰색' 객체둜 μƒˆλ‘œμš΄ μ°Έμ‘°κ°€ μƒμ„±λœλ‹€λ©΄, μ‚΄μ•„μžˆλŠ” 흰색 객체가 κ°€λΉ„μ§€λ‘œ 잘λͺ» λΆ„λ₯˜λ  μœ„ν—˜μ΄ μžˆμŠ΅λ‹ˆλ‹€ [5]. V8 엔진은 이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ μ“°κΈ° μž₯λ²½(Write barrier)을 ν™œμš©ν•©λ‹ˆλ‹€ [5]. μ“°κΈ° μž₯벽은 검은색 κ°μ²΄μ—μ„œ 흰색 객체둜의 포인터 생성을 κ°μ§€ν•˜λ©°, ν•΄λ‹Ή 포인터가 κ°μ§€λ˜λ©΄ 검은색 객체λ₯Ό λ‹€μ‹œ νšŒμƒ‰μœΌλ‘œ λ³€κ²½ν•˜κ³  λ§ˆν‚Ή 데크(Deque)둜 되돌렀 보내 흰색 객체가 μ •μƒμ μœΌλ‘œ λ°œκ²¬λ˜λ„λ‘ μˆœμ„œλ₯Ό λ³΄μ‘΄ν•©λ‹ˆλ‹€ [5]. * **λ‹€λ₯Έ μ—”μ§„μ—μ„œμ˜ κ΅¬ν˜„ (IBM OpenJ9):** IBM의 OpenJ9 VMμ—μ„œλŠ” 'Balanced GC μ •μ±…'을 톡해 점진적 λ™μ‹œ λ§ˆν‚Ή(Incremental concurrent mark)을 μ§€μ›ν•©λ‹ˆλ‹€ [6]. 이 방식은 전역적인 STW(Stop-The-World)λ₯Ό ν”Όν•˜λ©° 전체 νž™μ— 걸쳐 λ§ˆν‚Ή μž‘μ—…μ„ μ μ§„μ μœΌλ‘œ μˆ˜ν–‰ν•©λ‹ˆλ‹€ [7]. λ‹€λ₯Έ μ •μ±…μ˜ λ™μ‹œ λ§ˆν‚Ήκ³ΌλŠ” 달리 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μŠ€λ ˆλ“œκ°€ 객체 좔적에 μ°Έμ—¬ν•˜μ§€ μ•Šκ³  였직 λ°±κ·ΈλΌμš΄λ“œ μŠ€λ ˆλ“œλ§Œμ΄ 객체λ₯Ό μΆ”μ ν•˜κ³  μΉ΄λ“œ ν…Œμ΄λΈ” λ‚΄μ˜ 마크 λ§΅(Mark map)을 μ—…λ°μ΄νŠΈν•˜μ—¬ 객체 변경을 κ΄€λ¦¬ν•©λ‹ˆλ‹€ [7]. * **후속 단계 (μ§€μ—° μŠ€μœ„ν•‘):** 점진적 λ§ˆν‚Ήμ΄ μ™„λ£Œλ˜μ–΄ νž™ λ‚΄ λͺ¨λ“  객체의 생쑴 μ—¬λΆ€κ°€ κ²°μ •λ˜λ©΄, κ°€λΉ„μ§€ μ»¬λ ‰ν„°λŠ” μ§€μ—° μŠ€μœ„ν•‘(Lazy sweeping)을 μ‹œμž‘ν•©λ‹ˆλ‹€ [8, 9]. λ©”λͺ¨λ¦¬λ₯Ό μ¦‰μ‹œ ν•œ λ²ˆμ— λͺ¨λ‘ λΉ„μš°λŠ” λŒ€μ‹ , ν•„μš”ν•  λ•Œλ§ˆλ‹€ ν•„μš”ν•œ 만큼의 νŽ˜μ΄μ§€λ₯Ό μ •λ¦¬ν•¨μœΌλ‘œμ¨ GC μ£ΌκΈ°λ₯Ό μ™„λ£Œν•˜κ³  λ‹€μŒ 점진적 λ§ˆν‚Ήμ„ μ€€λΉ„ν•˜κ²Œ λ©λ‹ˆλ‹€ [8, 9]. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & RL Update) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** μžλ™ν™” 엔진에 μ˜ν•΄ λ§€ν•‘λœ μ§€μ‹μœΌλ‘œ, μΆ”ν›„ μ •λ°€ 검증 ν•„μš”. - **μ •μ±… λ³€ν™”:** Programming & Language λΆ„μ•Όμ˜ μžλ™ μžμ‚°ν™” μˆ˜ν–‰. ## πŸ”— 지식 μ—°κ²° (Graph) - **Related Topics:** [[κ°€λΉ„μ§€ μ»¬λ ‰μ…˜(Garbage Collection)]], [[μ“°κΈ° μž₯λ²½(Write barriers)]], [[μ§€μ—° μŠ€μœ„ν•‘(Lazy sweeping)]] - **Projects/Contexts:** [[V8 JavaScript Engine]], [[Orinoco Garbage Collector]], [[IBM OpenJ9 (Balanced GC)]] - **Contradictions/Notes:** 점진적 λ§ˆν‚Ήμ€ 메인 μŠ€λ ˆλ“œμ˜ κΈ΄ μΌμ‹œ μ •μ§€λ₯Ό λ°©μ§€ν•˜κ³  응닡성을 λ†’μ΄λŠ” λ°μ—λŠ” ν›Œλ₯­ν•œ κΈ°λ²•μ΄μ§€λ§Œ, 메인 μŠ€λ ˆλ“œμ—μ„œ κ°€λΉ„μ§€ μ»¬λ ‰μ…˜μ— μ†Œλͺ¨λ˜λŠ” 전체 μ‹œκ°„μ„ μ€„μ—¬μ£Όμ§€λŠ” μ•ŠμœΌλ©° 였히렀 λ―Έμ„Έν•˜κ²Œ μ¦κ°€μ‹œν‚€λŠ” κ²½ν–₯이 μžˆμŠ΅λ‹ˆλ‹€ [2]. --- *Last updated: 2026-04-19* - Raw Source: [[00_Raw/2026-04-20/점진적 λ§ˆν‚Ή(Incremental marking).md]] ---