--- id: P-REINFORCE-AUTO-A62B31 category: "10_Wiki/πŸ’‘ Topics/Programming & Language" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - 마크-μŠ€μœ•(Mark-Sweep)" --- # [[ᄆᅑ크-스윕(Mark-Sweep)|마크-μŠ€μœ•(Mark-Sweep)]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > 마크-μŠ€μœ•(Mark-Sweep)은 V8 μ—”μ§„ 및 μžλ°” 가상 λ¨Έμ‹ (JVM) λ“±μ—μ„œ 더 이상 ν•„μš”ν•˜μ§€ μ•Šμ€ 객체의 λ©”λͺ¨λ¦¬λ₯Ό νšŒμˆ˜ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•˜λŠ” μ£Όμš” κ°€λΉ„μ§€ μ»¬λ ‰μ…˜(Major GC) μ•Œκ³ λ¦¬μ¦˜μž…λ‹ˆλ‹€ [1-3]. 이 μ•Œκ³ λ¦¬μ¦˜μ€ νž™μ„ μˆœνšŒν•˜λ©° ν™œμ„± μƒνƒœμΈ 객체λ₯Ό μ‹λ³„ν•˜λŠ” '마크(Mark)' 단계와, ν‘œμ‹œλ˜μ§€ μ•Šμ€ 객체λ₯Ό μ œκ±°ν•˜μ—¬ λ©”λͺ¨λ¦¬λ₯Ό ν™•λ³΄ν•˜λŠ” 'μŠ€μœ•(Sweep)' λ‹¨κ³„λ‘œ λ‚˜λ‰˜μ–΄ λ™μž‘ν•©λ‹ˆλ‹€ [2, 4, 5]. 주둜 μˆ˜μ‹­μ—μ„œ 수백 λ©”κ°€λ°”μ΄νŠΈμ˜ 데이터λ₯Ό 포함할 수 μžˆλŠ” λŒ€μš©λŸ‰ λ©”λͺ¨λ¦¬ μ˜μ—­μΈ ꡬ곡간(Old Space)을 κ΄€λ¦¬ν•˜λŠ” 데 ν•„μˆ˜μ μœΌλ‘œ μ‚¬μš©λ©λ‹ˆλ‹€ [4, 6]. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) **μ•Œκ³ λ¦¬μ¦˜μ˜ μ£Όμš” λ™μž‘ 단계** * **마크(Mark) 단계:** κ°€λΉ„μ§€ 컬렉터가 μŠ€νƒ 포인터와 같은 GC 루트(Root)μ—μ„œ μ‹œμž‘ν•˜μ—¬ ν¬μΈν„°λ‘œ μ—°κ²°λœ 객체 κ·Έλž˜ν”„λ₯Ό 깊이 μš°μ„  탐색(DFS) λ°©μ‹μœΌλ‘œ μž¬κ·€μ μœΌλ‘œ μˆœνšŒν•©λ‹ˆλ‹€ [6, 7]. 이 과정을 톡해 도달 κ°€λŠ₯ν•œ(Reachable) 객체, 즉 ν˜„μž¬ μ‚¬μš© 쀑인 κ°μ²΄λŠ” ν™œμ„± μƒνƒœλ‘œ μ‹λ³„λ˜μ–΄ λ§ˆν¬λ©λ‹ˆλ‹€ [2, 5, 6, 8]. V8의 마크 λ‹¨κ³„λŠ” 객체의 μƒνƒœλ₯Ό 미발견 μƒνƒœμΈ '백색(White)', λ°œκ²¬λ˜μ—ˆμœΌλ‚˜ 이웃 객체가 아직 μ²˜λ¦¬λ˜μ§€ μ•Šμ€ 'νšŒμƒ‰(Grey)', 그리고 μ΄μ›ƒκΉŒμ§€ μ™„μ „νžˆ 처리된 '흑색(Black)'으둜 λΆ„λ₯˜ν•˜λŠ” 삼색(Tri-color) λ§ˆν‚Ή μ‹œμŠ€ν…œμ„ μ‚¬μš©ν•©λ‹ˆλ‹€ [6, 9]. * **μŠ€μœ•(Sweep) 단계:** 마크 단계가 μ™„λ£Œλœ ν›„, κ°€λΉ„μ§€ μ»¬λ ‰ν„°λŠ” νž™μ˜ λ§ˆν‚Ή λΉ„νŠΈλ§΅μ„ μŠ€μΊ”ν•˜μ—¬ ν™œμ„± μƒνƒœλ‘œ 흑색 ν‘œμ‹œκ°€ λ˜μ§€ μ•Šμ€(즉, λ°±μƒ‰μœΌλ‘œ 남은) κ°μ²΄λ“€μ˜ μ—°μ†λœ λ²”μœ„λ₯Ό μ°ΎμŠ΅λ‹ˆλ‹€ [5, 6, 10, 11]. μ΄λ ‡κ²Œ 발견된 μ‚¬μš© λΆˆκ°€λŠ₯ν•œ κ°μ²΄λ“€μ˜ λ©”λͺ¨λ¦¬ μ£Όμ†ŒλŠ” μ—¬μœ  곡간(Free space)으둜 λ³€ν™˜λ˜μ–΄ 빈 λͺ©λ‘(Free list)에 μΆ”κ°€λ˜λ©°, 이후 μƒˆλ‘œμš΄ 객체λ₯Ό ν• λ‹Ήν•  λ•Œ μž¬μ‚¬μš©λ©λ‹ˆλ‹€ [6, 10, 11]. **V8 μ—”μ§„μ—μ„œμ˜ ν™œμš© 및 μ„±λŠ₯ μ΅œμ ν™”** * **ꡬ곡간(Old Space) 관리:** 신곡간(New Space)을 κ΄€λ¦¬ν•˜λŠ” μŠ€μΊλΉˆμ§€(Scavenge) μ•Œκ³ λ¦¬μ¦˜μ€ μ†Œκ·œλͺ¨ λ©”λͺ¨λ¦¬ μˆ˜μ§‘μ—λŠ” λΉ λ₯΄μ§€λ§Œ 전체 λ©”λͺ¨λ¦¬μ˜ 두 λ°° 곡간을 ν•„μš”λ‘œ ν•˜λŠ” μ˜€λ²„ν—€λ“œκ°€ μžˆμ–΄ λŒ€μš©λŸ‰ νž™μ—λŠ” λΆ€μ ν•©ν•©λ‹ˆλ‹€ [4, 6]. λ”°λΌμ„œ V8은 수λͺ…이 κΈ΄ 객체듀이 λͺ¨μ—¬ μžˆλŠ” ꡬ곡간을 μˆ˜μ§‘ν•  λ•Œ 마크-μŠ€μœ• λ˜λŠ” 객체λ₯Ό ν•œκ³³μœΌλ‘œ λͺ¨μœΌλŠ” 과정이 μΆ”κ°€λœ 마크-컴팩트(Mark-Compact) μ•Œκ³ λ¦¬μ¦˜μ„ μ‚¬μš©ν•©λ‹ˆλ‹€ [4, 6, 12]. * **λ™μ‹œμ„± 및 점진적 처리 기법:** 전톡적인 마크-μŠ€μœ• 방식은 μ‹€ν–‰ 쀑인 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 메인 μŠ€λ ˆλ“œλ₯Ό μž₯μ‹œκ°„ λ©ˆμΆ”κ²Œ ν•˜λŠ”(Stop-the-world) λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€ [13, 14]. V8은 μ΄λŸ¬ν•œ μ§€μ—° ν˜„μƒμ„ 쀄이기 μœ„ν•΄ λ§ˆν‚Ή μž‘μ—…μ„ μ—¬λŸ¬ 번의 짧은 멈좀으둜 λ‚˜λˆ„μ–΄ μˆ˜ν–‰ν•˜λŠ” 점진적 λ§ˆν‚Ή(Incremental marking), λ°±κ·ΈλΌμš΄λ“œ 헬퍼 μŠ€λ ˆλ“œλ₯Ό ν™œμš©ν•˜μ—¬ 메인 μŠ€λ ˆλ“œμ— 영ν–₯을 μ£Όμ§€ μ•ŠλŠ” λ™μ‹œμ (Concurrent) λ§ˆν‚Ή 및 μŠ€μœ•, 그리고 ν•„μš”ν•  λ•ŒκΉŒμ§€ λ©”λͺ¨λ¦¬ ν•΄μ œλ₯Ό λ―Έλ£¨λŠ” μ§€μ—° μŠ€μœ•(Lazy sweeping) 기법을 λ„μž…ν•΄ μ„±λŠ₯을 μ΅œμ ν™”ν–ˆμŠ΅λ‹ˆλ‹€ [13-16]. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & RL Update) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** μžλ™ν™” 엔진에 μ˜ν•΄ λ§€ν•‘λœ μ§€μ‹μœΌλ‘œ, μΆ”ν›„ μ •λ°€ 검증 ν•„μš”. - **μ •μ±… λ³€ν™”:** Programming & Language λΆ„μ•Όμ˜ μžλ™ μžμ‚°ν™” μˆ˜ν–‰. ## πŸ”— 지식 μ—°κ²° (Graph) - **Related Topics:** [[α„€α…‘α„‡α…΅α„Œα…΅ ᄏα…₯ᆯ렉션(Garbage Collection)|κ°€λΉ„μ§€ μ»¬λ ‰μ…˜(Garbage Collection)]], ꡬ곡간(Old Space), [[ᄆᅑ크-ᄏα…₯ᆷᄑᅒᆨ트(Mark-Compact)|마크-컴팩트(Mark-Compact)]], [[α„Œα…₯α†·α„Œα…΅α†«α„Œα…₯ᆨ ᄆᅑ캉(Incremental marking)|점진적 λ§ˆν‚Ή(Incremental Marking)]], μŠ€μΊλΉˆμ§€(Scavenge) - **Projects/Contexts:** [[V8 α„‹α…¦α†«α„Œα…΅α†«(V8 Engine)|V8 μ—”μ§„(V8 Engine)]], μ˜€λ¦¬λ…Έμ½”(Orinoco), [[α„Œα…‘α„‡α…‘ ᄀᅑᄉᅑᆼ ᄆα…₯산(JVM)|μžλ°” 가상 λ¨Έμ‹ (JVM)]] - **Contradictions/Notes:** μ†ŒμŠ€μ˜ μ„€λͺ…에 λ”°λ₯΄λ©΄, μŠ€μΊλΉˆμ§€(Scavenge) μ•Œκ³ λ¦¬μ¦˜μ€ 투-슀페이슀(to-space)와 프둬-슀페이슀(from-space)λ₯Ό μ‚¬μš©ν•˜λŠ” 물리적 λ©”λͺ¨λ¦¬ μ˜€λ²„ν—€λ“œκ°€ 크기 λ•Œλ¬Έμ— 신곡간(New Space)μ—μ„œλ§Œ μœ μš©ν•˜κ²Œ 쓰이며, 반면 마크-μŠ€μœ•μ€ λ©”λͺ¨λ¦¬ μ˜€λ²„ν—€λ“œλŠ” μ μ§€λ§Œ μ‹€ν–‰ μ‹œκ°„μ΄ 였래 걸릴 수 μžˆμ–΄ ꡬ곡간(Old Space) 관리에 μ‚¬μš©λœλ‹€λŠ” λͺ…ν™•ν•œ μ—­ν•  뢄담이 μ‘΄μž¬ν•©λ‹ˆλ‹€ [4, 6]. --- *Last updated: 2026-04-19* - Raw Source: 00_Raw/2026-04-20/마크-μŠ€μœ•(Mark-Sweep).md ---