--- id: P-REINFORCE-AUTO-F94637 category: "[[10_Wiki/πŸ’‘ Topics/General Knowledge]]" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - 마크-μŠ€μœ„ν”„-컴팩트(Mark-Sweep-Compact)" --- # [[마크-μŠ€μœ„ν”„-컴팩트(Mark-Sweep-Compact)]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > 지식 μš”μ•½ 정보 μΆ”μΆœ 쀑... ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) * **마크(Mark) 단계:** κ°€λΉ„μ§€ 컬렉터가 νž™ λ‚΄λΆ€μ˜ λͺ¨λ“  객체λ₯Ό νƒμƒ‰ν•˜μ—¬ μ‚¬μš© 쀑인 라이브 객체와 κ·Έλ ‡μ§€ μ•Šμ€ 객체λ₯Ό μ‹λ³„ν•˜λŠ” 단계이닀 [8, 9]. 루트(Root) 객체뢀터 μ‹œμž‘ν•˜μ—¬ ν¬μΈν„°λ‘œ μ—°κ²°λœ 객체듀을 깊이 μš°μ„  탐색(DFS) λ°©μ‹μœΌλ‘œ μ«“μ•„κ°€λ©° 도달 κ°€λŠ₯성을 ν™•μΈν•œλ‹€ [10, 11]. 이 κ³Όμ •μ—μ„œ 객체듀은 μ„Έ κ°€μ§€ 색상(Tri-color)으둜 λΆ„λ₯˜λ˜μ–΄ λ§ˆν‚Ήλœλ‹€ [4, 8]. κ°€λΉ„μ§€ 컬렉터가 아직 λ°œκ²¬ν•˜μ§€ λͺ»ν•œ κ°μ²΄λŠ” '흰색(White)', λ°œκ²¬λ˜μ—ˆμ§€λ§Œ 이웃 κ°μ²΄λ“€μ˜ μ²˜λ¦¬κ°€ μ™„λ£Œλ˜μ§€ μ•Šμ€ μƒνƒœλŠ” 'νšŒμƒ‰(Grey)', 그리고 객체 μžμ‹ κ³Ό κ·Έ μ΄μ›ƒκΉŒμ§€ λͺ¨λ‘ μ²˜λ¦¬κ°€ μ™„λ£Œλœ μƒνƒœλŠ” '검은색(Black)'으둜 ν‘œμ‹œλœλ‹€ [8, 12]. * **μŠ€μœ„ν”„(Sweep) 단계:** λ§ˆν‚Ή 단계가 λλ‚œ 후에도 도달할 수 μ—†μ–΄ '흰색'으둜 λ‚¨μ•„μžˆλŠ” λ°λ“œ κ°μ²΄λ“€μ˜ μ—°μ†λœ λ²”μœ„λ₯Ό μŠ€μΊ”ν•˜λŠ” 단계이닀 [4, 13, 14]. κ°€λΉ„μ§€ μ»¬λ ‰ν„°λŠ” 이 λ°λ“œ 객체 μ˜μ—­μ„ 빈 곡간(Free spaces)으둜 λ³€ν™˜ν•˜κ³  이λ₯Ό κ°€μš© λͺ©λ‘(Free lists)에 μΆ”κ°€ν•œλ‹€ [13, 14]. κ°€μš© λͺ©λ‘μ€ 크기별(Small, Medium, Large λ“±)둜 κ΅¬λΆ„λ˜μ–΄ κ΄€λ¦¬λ˜λ©°, 이후 μƒˆλ‘œμš΄ 객체λ₯Ό ν• λ‹Ήν•˜κ±°λ‚˜ μŠ€μΊλΉˆμ €(Scavenger) μ•Œκ³ λ¦¬μ¦˜μ— μ˜ν•΄ 살아남은 객체듀이 이전 μ„ΈλŒ€(Old space)둜 승격(Promotion)될 λ•Œ μ‚¬μš©λœλ‹€ [13, 14]. * **컴팩트(Compact) 단계:** νž™ λ©”λͺ¨λ¦¬μ˜ λ‹¨νŽΈν™”(Fragmentation)λ₯Ό 쀄이기 μœ„ν•΄, 빈 곡간이 λ§Žμ•„ νŒŒνŽΈν™”λœ νŽ˜μ΄μ§€μ—μ„œ 라이브 객체듀을 κ°€μš© κ³΅κ°„μ΄λ‚˜ μ™„μ „νžˆ μƒˆλ‘œμš΄ νŽ˜μ΄μ§€λ‘œ μ΄μ£Όμ‹œν‚€λŠ” 과정이닀 [2, 15, 16]. 객체가 μƒˆλ‘œμš΄ μœ„μΉ˜λ‘œ λ³΅μ‚¬λ˜λ©΄, 원본 객체의 첫 번째 μ›Œλ“œμ— μƒˆλ‘œμš΄ μœ„μΉ˜λ₯Ό κ°€λ¦¬ν‚€λŠ” ν¬μ›Œλ”© μ£Όμ†Œ(Forwarding address)κ°€ 남겨진닀 [15, 17]. λŒ€κ·œλͺ¨ νž™ κ³΅κ°„μ—μ„œ 객체λ₯Ό μ΄λ™μ‹œν‚€κ³  이λ₯Ό μ°Έμ‘°ν•˜λŠ” λͺ¨λ“  포인터λ₯Ό 일일이 μ—…λ°μ΄νŠΈν•˜λŠ” μž‘μ—…μ€ 계산 λΉ„μš©μ΄ 크기 λ•Œλ¬Έμ—, λͺ¨λ“  μŠ€μœ„ν”„ μ£ΌκΈ°λ§ˆλ‹€ μ»΄νŒ©νŠΈκ°€ μΌμ–΄λ‚˜λŠ” 것은 μ•„λ‹ˆλ©° λ©”λͺ¨λ¦¬ νŒŒνŽΈν™”κ°€ 심각할 λ•Œ μ„ νƒμ μœΌλ‘œ μˆ˜ν–‰λœλ‹€ [7, 18]. * **μ„±λŠ₯ 및 μ΅œμ ν™” μ „λž΅ (Orinoco 및 λ™μ‹œμ„± 기법):** 마크-μŠ€μœ„ν”„-μ»΄νŒ©νŠΈλŠ” 수백 λ©”κ°€λ°”μ΄νŠΈμ˜ 데이터λ₯Ό μ²˜λ¦¬ν•˜λ―€λ‘œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 싀행을 λ©ˆμΆ”λŠ” κΈ΄ 쀑단 μ‹œκ°„(수백 λ°€λ¦¬μ΄ˆ λ‹¨μœ„)을 μ΄ˆλž˜ν•  수 μžˆλ‹€ [2, 5]. V8 μ—”μ§„μ˜ Orinoco ν”„λ‘œμ νŠΈ λ“± μ΅œμ‹  κ΅¬ν˜„μ²΄λ“€μ€ 이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ λ°±κ·ΈλΌμš΄λ“œ μŠ€λ ˆλ“œλ₯Ό μ΄μš©ν•΄ μžλ°”μŠ€ν¬λ¦½νŠΈ μ‹€ν–‰κ³Ό λ™μ‹œμ— λ§ˆν‚Ή μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” λ™μ‹œ λ§ˆν‚Ή(Concurrent marking), μž‘μ—…μ„ 잘게 μͺΌκ°œμ–΄ λ°°λΆ„ν•˜λŠ” 점진적 λ§ˆν‚Ή(Incremental marking), 그리고 λ‹Ήμž₯ 빈 곡간이 ν•„μš”ν•΄μ§ˆ λ•ŒκΉŒμ§€ μŠ€μœ„ν•‘μ„ λŠ¦μΆ”λŠ” μ§€μ—° μŠ€μœ„ν•‘(Lazy sweeping) 기법 등을 λ„μž…ν•˜μ—¬ 메인 μŠ€λ ˆλ“œμ˜ 뢀담을 μ΅œμ†Œν™”ν•˜κ³  μžˆλ‹€ [5, 19-21]. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & RL Update) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** μžλ™ν™” 엔진에 μ˜ν•΄ λ§€ν•‘λœ μ§€μ‹μœΌλ‘œ, μΆ”ν›„ μ •λ°€ 검증 ν•„μš”. - **μ •μ±… λ³€ν™”:** General Knowledge λΆ„μ•Όμ˜ μžλ™ μžμ‚°ν™” μˆ˜ν–‰. ## πŸ”— 지식 μ—°κ²° (Graph) - **Related Topics:** [[κ°€λΉ„μ§€ μ»¬λ ‰μ…˜(Garbage Collection)]], [[이전 μ„ΈλŒ€(Old Generation/Space)]], [[μŠ€μΊλΉˆμ €(Scavenger)]], [[λ™μ‹œμ„± 및 점진적 λ§ˆν‚Ή(Concurrent & Incremental Marking)]] - **Projects/Contexts:** [[V8 μžλ°”μŠ€ν¬λ¦½νŠΈ μ—”μ§„]], [[μžλ°” 가상 λ¨Έμ‹ (JVM)]], [[Orinoco ν”„λ‘œμ νŠΈ]] - **Contradictions/Notes:** μ†ŒμŠ€ μ „λ°˜μ—μ„œ 마크-μŠ€μœ„ν”„-컴팩트의 κΈ°λ³Έ μ›λ¦¬μ—λŠ” 차이가 μ—†μœΌλ‚˜, μž‘λ™ ν™˜κ²½(예: V8 μ—”μ§„ λŒ€ IBM JVM)에 따라 이 μ•Œκ³ λ¦¬μ¦˜μ„ νŠΈλ¦¬κ±°ν•˜λŠ” μ‘°κ±΄μ΄λ‚˜ μ‘°μ • κ°€λŠ₯ν•œ μ»€λ§¨λ“œλΌμΈ μ˜΅μ…˜(`-Xcompactgc`, `--trace-gc` λ“±)은 ꡬ체적인 κ΅¬ν˜„μ²΄μ— 따라 각기 λ‹€λ₯΄κ²Œ μ œμ–΄λœλ‹€λŠ” 점이 ν™•μΈλœλ‹€ [18, 22]. --- *Last updated: 2026-04-19* - Raw Source: [[00_Raw/2026-04-20/마크-μŠ€μœ„ν”„-컴팩트(Mark-Sweep-Compact).md]] ---