--- id: P-REINFORCE-AUTO-7BED1F category: "10_Wiki/πŸ’‘ Topics/Programming & Language" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - 이전 μ„ΈλŒ€(Old Generation_Space)" --- # [[α„‹α…΅α„Œα…₯ᆫ 세ᄃᅒ(Old Generation_Space)|이전 μ„ΈλŒ€(Old Generation_Space)]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > V8 μ—”μ§„μ˜ νž™(Heap) λ©”λͺ¨λ¦¬ κ΅¬μ‘°μ—μ„œ '이전 μ„ΈλŒ€(Old Generation λ˜λŠ” Old Space)'λŠ” μ‹ μ„ΈλŒ€(New Space)μ—μ„œ λ°œμƒν•˜λŠ” μ—¬λŸ¬ 번의 λ§ˆμ΄λ„ˆ κ°€λΉ„μ§€ μ»¬λ ‰μ…˜(μŠ€μΊλΉˆμ§€)을 거치고 살아남은, 수λͺ…이 κΈ΄ 객체듀이 승격(Promote)λ˜μ–΄ μ €μž₯λ˜λŠ” λ©”λͺ¨λ¦¬ κ³΅κ°„μž…λ‹ˆλ‹€ [1-4]. 이 곡간은 λ°μ΄ν„°μ˜ νŠΉμ„±μ— 따라 포인터가 μžˆλŠ” 곡간(Old-pointer-space)κ³Ό 순수 λ°μ΄ν„°λ§Œ μžˆλŠ” 곡간(Old-data-space)으둜 λ‚˜λ‰˜λ©°, 메이저 κ°€λΉ„μ§€ 컬렉터(Major GC)에 μ˜ν•΄ κ΄€λ¦¬λ©λ‹ˆλ‹€ [4-6]. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) * **이전 μ„ΈλŒ€ λ©”λͺ¨λ¦¬μ˜ ꡬ쑰 및 μ„ΈλΆ„ν™”** 이전 μ„ΈλŒ€λŠ” 수백 λ©”κ°€λ°”μ΄νŠΈμ˜ 데이터λ₯Ό 포함할 수 μžˆλŠ” 맀우 큰 κ³΅κ°„μœΌλ‘œ, λ‚΄λΆ€μ μœΌλ‘œ 두 개의 μ£Όμš” κ³΅κ°„μœΌλ‘œ λ‚˜λ‰©λ‹ˆλ‹€ [7]. * **Old-pointer-space:** λ‹€λ₯Έ 객체λ₯Ό κ°€λ¦¬ν‚€λŠ” 포인터λ₯Ό 포함할 수 μžˆλŠ” λŒ€λΆ€λΆ„μ˜ 살아남은 객체듀이 λ³΄κ΄€λ˜λŠ” κ³³μž…λ‹ˆλ‹€ [4-6]. * **Old-data-space:** 포인터 없이 μˆœμˆ˜ν•˜κ²Œ μ›μ‹œ λ°μ΄ν„°λ§Œ ν¬ν•¨ν•˜λŠ” 객체(예: λ¬Έμžμ—΄, λ°•μŠ€ν™”λœ 숫자, μ–Έλ°•μ‹±λœ 더블 λ°°μ—΄ λ“±)κ°€ μœ„μΉ˜ν•©λ‹ˆλ‹€ [4-6]. 이 κ³΅κ°„μ—μ„œλŠ” 객체가 λ‹€λ₯Έ 객체둜의 포인터λ₯Ό κ°€μ§€μ§€ μ•ŠλŠ”λ‹€λŠ” 것을 GCκ°€ μ•Œκ³  있기 λ•Œλ¬Έμ—, λ§ˆν‚Ή(Marking) μ‹œ 포인터 좔적 단계λ₯Ό κ±΄λ„ˆλ›°μ–΄ μ„±λŠ₯을 μ΅œμ ν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [2]. * **메이저 κ°€λΉ„μ§€ μ»¬λ ‰μ…˜(Major GC)** 이전 μ„ΈλŒ€λŠ” 곡간이 크기 λ•Œλ¬Έμ— μ‹ μ„ΈλŒ€μ—μ„œ μ‚¬μš©ν•˜λŠ” μŠ€μΊλΉˆμ§€(Scavenge) μ•Œκ³ λ¦¬μ¦˜(To-Space와 From-Spaceλ₯Ό μ΄μš©ν•œ 볡사 방식)을 μ μš©ν•˜λŠ” 것이 물리적 λ©”λͺ¨λ¦¬ μ˜€λ²„ν—€λ“œ μΈ‘λ©΄μ—μ„œ λΉ„μ‹€μš©μ μž…λ‹ˆλ‹€ [7, 8]. λ”°λΌμ„œ 마크-μŠ€μœ•(Mark-Sweep)κ³Ό 마크-컴팩트(Mark-Compact)λΌλŠ” 두 κ°€μ§€ μ£Όμš” μ•Œκ³ λ¦¬μ¦˜μ„ μ‚¬μš©ν•©λ‹ˆλ‹€ [7, 9, 10]. * **Mark (λ§ˆν‚Ή):** 깊이 μš°μ„  탐색(DFS) μ•Œκ³ λ¦¬μ¦˜μ„ μ‚¬μš©ν•˜μ—¬ 루트(Root)μ—μ„œ μ ‘κ·Ό κ°€λŠ₯ν•œ ν™œμ„± 객체(Live objects)λ₯Ό μ°Ύμ•„ 검은색(Black)으둜 ν‘œμ‹œν•©λ‹ˆλ‹€ [11-13]. * **Sweep (μŠ€μœ•):** λ§ˆν‚Ήλ˜μ§€ μ•Šμ€ μ—°μ†λœ λ°λ“œ 객체듀을 μŠ€μΊ”ν•˜μ—¬ 이λ₯Ό μ—¬μœ  곡간(Free lists)으둜 λ³€ν™˜ν•¨μœΌλ‘œμ¨ λ©”λͺ¨λ¦¬λ₯Ό μž¬μ‚¬μš©ν•  수 있게 ν•©λ‹ˆλ‹€ [14, 15]. * **Compact (컴팩트):** λ©”λͺ¨λ¦¬ λ‹¨νŽΈν™”(Fragmentation)κ°€ μ‹¬ν•œ νŽ˜μ΄μ§€μ˜ ν™œμ„± 객체λ₯Ό λ‹€λ₯Έ νŽ˜μ΄μ§€μ˜ 빈 κ³΅κ°„μœΌλ‘œ 볡사(이주)μ‹œν‚€κ³  μ›λž˜ 곡간을 ν•΄μ œν•˜μ—¬ λ©”λͺ¨λ¦¬ νš¨μœ¨μ„ λ†’μž…λ‹ˆλ‹€ [9, 16, 17]. 이동 λΉ„μš©μ΄ λ†’κΈ° λ•Œλ¬Έμ— λͺ¨λ“  κ²½μš°μ— μˆ˜ν–‰λ˜μ§€λŠ” μ•Šκ³  ν•„μš”μ— 따라 μ„ λ³„μ μœΌλ‘œ 곡격적인 압좕을 μˆ˜ν–‰ν•©λ‹ˆλ‹€ [9, 18]. * **μ΅œμ ν™”: 점진적 λ§ˆν‚Ή 및 μ§€μ—° μŠ€μœ•(Incremental Marking & Lazy Sweeping)** λŒ€κ·œλͺ¨ 이전 μ„ΈλŒ€ λ©”λͺ¨λ¦¬λ₯Ό ν•œ λ²ˆμ— μˆ˜μ§‘ν•˜λ €κ³  ν•˜λ©΄ 수백 λ°€λ¦¬μ΄ˆμ— λ‹¬ν•˜λŠ” κΈ΄ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ§€μ—°(Stop-the-world pause)이 λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€ [17, 19]. 이λ₯Ό λ°©μ§€ν•˜κΈ° μœ„ν•΄ κ°€λΉ„μ§€ μ»¬λ ‰μ…˜μ„ μž‘μ€ λ‹¨κ³„λ‘œ λ‚˜λˆ„μ–΄ 메인 μŠ€λ ˆλ“œμ˜ JavaScript μ‹€ν–‰κ³Ό ꡐ차 μˆ˜ν–‰ν•˜λŠ” '점진적 λ§ˆν‚Ή(Incremental marking)'κ³Ό, λͺ¨λ“  νŽ˜μ΄μ§€λ₯Ό ν•œ λ²ˆμ— μŠ€μœ•ν•˜μ§€ μ•Šκ³  λ©”λͺ¨λ¦¬κ°€ ν•„μš”ν•œ μ‹œμ κΉŒμ§€ μŠ€μœ•μ„ λ―Έλ£¨λŠ” 'μ§€μ—° μŠ€μœ•(Lazy sweeping)' 기법을 μ‚¬μš©ν•©λ‹ˆλ‹€ [17, 19-22]. * **μ“°κΈ° μž₯λ²½(Write Barriers)κ³Ό 포인터 좔적** 이전 μ„ΈλŒ€μ˜ 객체가 μ‹ μ„ΈλŒ€(New Space)의 객체λ₯Ό κ°€λ¦¬ν‚€λŠ” 포인터λ₯Ό κ°€μ§€κ²Œ 될 경우, λ§ˆμ΄λ„ˆ GCκ°€ 이λ₯Ό μΈμ‹ν•˜μ§€ λͺ»ν•΄ ν™œμ„± 객체λ₯Ό μ§€μš°λŠ” 것을 λ°©μ§€ν•˜κΈ° μœ„ν•΄ 'μ“°κΈ° μž₯λ²½(Write barriers)'을 μ‚¬μš©ν•©λ‹ˆλ‹€ [23-25]. 이 μž₯벽은 κ΅¬μ„ΈλŒ€μ—μ„œ μ‹ μ„ΈλŒ€λ‘œ ν–₯ν•˜λŠ” 포인터(Old-to-new references)κ°€ 기둝될 λ•Œ 이λ₯Ό μŠ€ν† μ–΄ 버퍼(Store buffer)에 μ €μž₯ν•˜μ—¬, 이후 λ§ˆμ΄λ„ˆ GC μ‹œ 이전 μ„ΈλŒ€ 전체λ₯Ό μŠ€μΊ”ν•˜μ§€ μ•Šκ³ λ„ 효율적으둜 객체λ₯Ό μˆ˜μ§‘ν•  수 있게 ν•©λ‹ˆλ‹€ [23, 24]. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & RL Update) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** μžλ™ν™” 엔진에 μ˜ν•΄ λ§€ν•‘λœ μ§€μ‹μœΌλ‘œ, μΆ”ν›„ μ •λ°€ 검증 ν•„μš”. - **μ •μ±… λ³€ν™”:** Programming & Language λΆ„μ•Όμ˜ μžλ™ μžμ‚°ν™” μˆ˜ν–‰. ## πŸ”— 지식 μ—°κ²° (Graph) - **Related Topics:** [[New Space(Young Generation)|New Space (Young Generation)]], Major GC (Mark-Sweep / Mark-Compact), Write Barriers, [[Generational Hypothesis|Generational Hypothesis]] - **Projects/Contexts:** [[V8 JavaScript Engine|V8 JavaScript Engine]], Orinoco Garbage Collector - **Contradictions/Notes:** μ†ŒμŠ€μ— κ΄€λ ¨ 정보가 λΆ€μ‘±ν•©λ‹ˆλ‹€. (μ†ŒμŠ€ μ „λ°˜μ—μ„œ 이전 μ„ΈλŒ€ 관리에 λŒ€ν•œ μ„€λͺ…은 μΌκ΄€λ˜λ©° λͺ…μ‹œμ μΈ λͺ¨μˆœμ μ€ μ‘΄μž¬ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.) --- *Last updated: 2026-04-19* - Raw Source: 00_Raw/2026-04-20/이전 μ„ΈλŒ€(Old Generation_Space).md ---