--- id: P-REINFORCE-AUTO-51196C category: "10_Wiki/๐Ÿ’ก Topics/Programming & Language" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ (Garbage Collection)" --- # [[แ„€แ…กแ„‡แ…ตแ„Œแ…ต แ„แ…ฅแ†ฏแ„…แ…ฆแ†จแ„‰แ…งแ†ซ (Garbage Collection)|๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ (Garbage Collection)]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜(GC)์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋” ์ด์ƒ ํ•„์š”ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ๋„๋‹ฌํ•  ์ˆ˜ ์—†๋Š” ๊ฐ์ฒด๊ฐ€ ์ฐจ์ง€ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ์‹๋ณ„ํ•˜๊ณ  ์ž๋™์œผ๋กœ ํšŒ์ˆ˜ํ•˜์—ฌ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ํ”„๋กœ์„ธ์Šค์ž…๋‹ˆ๋‹ค [1, 2]. ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ง์ ‘ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๊ณ  ํ•ด์ œํ•ด์•ผ ํ•˜๋Š” ๋ณต์žก์„ฑ์„ ์ค„์—ฌ์ฃผ๊ณ  ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜์™€ ๊ฐ™์€ ์˜ค๋ฅ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ค๋‹ˆ๋‹ค [3]. ํ•˜์ง€๋งŒ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์— ๋Œ€ํ•œ ํ†ต์ œ๊ถŒ์„ ์žƒ๊ฒŒ ๋˜๋ฉฐ, ์‹œ์Šคํ…œ ์‹คํ–‰์„ ๋ฉˆ์ถ”๊ฒŒ ํ•˜๋Š” ์˜ˆ์ธก ๋ถˆ๊ฐ€๋Šฅํ•œ ์ผ์‹œ ์ •์ง€(Stop-The-World)๋ฅผ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ๋Š” ์–‘๋‚ ์˜ ๊ฒ€๊ณผ ๊ฐ™์€ ํŠน์„ฑ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค [2-4]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) - **๋„๋‹ฌ ๊ฐ€๋Šฅ์„ฑ(Reachability)๊ณผ ์ƒ์กด ๊ฐ์ฒด ์‹๋ณ„** ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๋Š” '๋„๋‹ฌ ๊ฐ€๋Šฅ์„ฑ'์„ ๊ฐ์ฒด ์ƒ์กด์˜ ์ง€ํ‘œ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค [5]. ์ „์—ญ ๊ฐ์ฒด, ๋กœ์ปฌ ๋ณ€์ˆ˜(์Šคํƒ), ์›น ๋ธŒ๋ผ์šฐ์ €์˜ DOM ์š”์†Œ ๋“ฑ๊ณผ ๊ฐ™์€ ๋ฃจํŠธ(Root) ๊ฐ์ฒด์ด๊ฑฐ๋‚˜, ๋‹ค๋ฅธ ์ƒ์กด ๊ฐ์ฒด๋กœ๋ถ€ํ„ฐ ์ฐธ์กฐ(Pointer) ์ฒด์ธ์„ ํ†ตํ•ด ๋„๋‹ฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด๋Š” '์ƒ์กด(live)' ์ƒํƒœ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค [1, 6, 7]. ๋ฐ˜๋ฉด ๋ฃจํŠธ์—์„œ ๋„๋‹ฌํ•  ์ˆ˜ ์—†๋Š” ๋ชจ๋“  ๊ฐ์ฒด๋Š” '์ฃฝ์€(dead)' ๊ฐ์ฒด, ์ฆ‰ ๊ฐ€๋น„์ง€๋กœ ๋ถ„๋ฅ˜๋˜์–ด ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํšŒ์ˆ˜๋ฉ๋‹ˆ๋‹ค [1, 6, 8, 9]. - **์„ธ๋Œ€๋ณ„ ๊ฐ€์„ค๊ณผ ํž™(Heap) ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ** ๋Œ€๋ถ€๋ถ„์˜ ๊ฐ์ฒด๋Š” ์ƒ์„ฑ๋œ ์งํ›„ ๊ธˆ๋ฐฉ ์ฃฝ๋Š”๋‹ค๋Š” '์„ธ๋Œ€๋ณ„ ๊ฐ€์„ค(Generational Hypothesis)'์— ๊ธฐ๋ฐ˜ํ•˜์—ฌ, V8๊ณผ ๊ฐ™์€ ์ตœ์‹  ์—”์ง„์€ ํž™ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์—ฌ๋Ÿฌ ์„ธ๋Œ€๋กœ ๋ถ„ํ• ํ•ฉ๋‹ˆ๋‹ค [10-12]. ๊ฐ์ฒด๋Š” ์ฒ˜์Œ ๋งค์šฐ ์ž‘๊ณ  ํ• ๋‹น์ด ๋น ๋ฅธ '์ Š์€ ์„ธ๋Œ€(Young Generation/New-space)'์— ํ• ๋‹น๋˜๋ฉฐ, ์ด๊ณณ์—์„œ ์—ฌ๋Ÿฌ ๋ฒˆ์˜ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ์ฃผ๊ธฐ๋ฅผ ์‚ด์•„๋‚จ์€ ๊ฐ์ฒด๋งŒ์ด ํฌ๊ธฐ๊ฐ€ ํฐ '์˜ค๋ž˜๋œ ์„ธ๋Œ€(Old Generation/Old-space)'๋กœ ์Šน๊ฒฉ(Promotion)๋ฉ๋‹ˆ๋‹ค [10, 11, 13, 14]. - **๋งˆ์ด๋„ˆ GC (Minor GC / Scavenge ์—ฐ์‚ฐ)** ์ Š์€ ์„ธ๋Œ€์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด Scavenge(๋˜๋Š” Copy forward) ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ž์ฃผ ๊ทธ๋ฆฌ๊ณ  ๋น ๋ฅด๊ฒŒ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค [15-18]. ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๊ณต๊ฐ„์„ ๋‘ ๊ฐœ์˜ ๋™์ผํ•œ ๋ฐ˜๊ณต๊ฐ„(From-space์™€ To-space)์œผ๋กœ ๋‚˜๋ˆ„์–ด, ์ƒ์กดํ•œ ๊ฐ์ฒด๋ฅผ To-space๋กœ ๋ณต์‚ฌํ•˜๊ฑฐ๋‚˜ ์˜ค๋ž˜๋œ ์„ธ๋Œ€๋กœ ์Šน๊ฒฉ์‹œํ‚จ ํ›„, From-space ์ „์ฒด๋ฅผ ๋น„์›Œ๋ฒ„๋ฆฝ๋‹ˆ๋‹ค [15, 19-22]. ์ด ๊ณผ์ •์—์„œ ๊ฐ์ฒด๋“ค์ด ์—ฐ์†๋œ ๊ณต๊ฐ„์— ์••์ถ•๋˜๋ฏ€๋กœ ๋ฉ”๋ชจ๋ฆฌ ํŒŒํŽธํ™”๊ฐ€ ๋ฐฉ์ง€๋ฉ๋‹ˆ๋‹ค [15, 20, 21]. - **๋ฉ”์ด์ € GC (Major GC / Mark-Sweep-Compact)** ์˜ค๋ž˜๋œ ์„ธ๋Œ€๋ฅผ ์ˆ˜์ง‘ํ•  ๋•Œ๋Š” Mark-Sweep ๋ฐ Mark-Compact ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค [5, 23, 24]. * **๋งˆํ‚น(Marking):** GC๊ฐ€ ๋ฃจํŠธ๋ถ€ํ„ฐ ๊ฐ์ฒด ๊ทธ๋ž˜ํ”„๋ฅผ ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰(DFS)์œผ๋กœ ์ถ”์ ํ•˜์—ฌ ์ƒ์กด ๊ฐ์ฒด๋ฅผ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ๊ฐ์ฒด๋Š” ๋ฐœ๊ฒฌ ์ƒํƒœ์— ๋”ฐ๋ผ ํฐ์ƒ‰(๋ฏธ๋ฐœ๊ฒฌ), ํšŒ์ƒ‰(๋ฐœ๊ฒฌ๋˜์—ˆ์œผ๋‚˜ ์ด์›ƒ ๋ฏธ์ฒ˜๋ฆฌ), ๊ฒ€์€์ƒ‰(์™„์ „ ์ฒ˜๋ฆฌ๋จ)์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค [7, 25-27]. * **์Šค์œ•(Sweeping):** ๋งˆํ‚น๋˜์ง€ ์•Š์€ ์ฃฝ์€ ๊ฐ์ฒด์˜ ๋ฒ”์œ„๋ฅผ ์Šค์บ”ํ•˜์—ฌ ๋นˆ ๊ณต๊ฐ„(Free list)์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  ํšŒ์ˆ˜ํ•ฉ๋‹ˆ๋‹ค [27-29]. * **์••์ถ•(Compacting):** ๋ฉ”๋ชจ๋ฆฌ ํŒŒํŽธํ™”๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ์‚ด์•„๋‚จ์€ ๊ฐ์ฒด๋“ค์„ ์กฐ๊ฐ๋‚œ ํŽ˜์ด์ง€์—์„œ ๋‹ค๋ฅธ ํŽ˜์ด์ง€์˜ ๋นˆ ๊ณต๊ฐ„์œผ๋กœ ์ด์ฃผ(Migration)์‹œ์ผœ ๋ชจ์•„์ค๋‹ˆ๋‹ค [2, 27, 30, 31]. - **์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ธฐ๋ฒ• (์ง€์—ฐ ์ตœ์†Œํ™”)** ๊ณผ๊ฑฐ ์ „ํ†ต์ ์ธ GC ๋ฐฉ์‹์€ ์ „์ฒด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰์„ ๋ฉˆ์ถ”๋Š” 'Stop-The-World' ์ผ์‹œ ์ •์ง€๊ฐ€ ๊ธธ์–ด์ง€๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค [2, 32]. ์ด๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด V8์˜ Orinoco ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ ๋“ฑ์€ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์™€ ํ—ฌํผ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ์ž‘์—…์„ ๋‚˜๋ˆ„์–ด ์ˆ˜ํ–‰ํ•˜๋Š” **๋ณ‘๋ ฌ(Parallel)** ์ฒ˜๋ฆฌ, ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์˜ JavaScript ์‹คํ–‰ ์‚ฌ์ด์‚ฌ์ด์— GC ์ž‘์—…์„ ์ž‘์€ ๋‹จ์œ„๋กœ ์ชผ๊ฐœ์„œ ์ˆ˜ํ–‰ํ•˜๋Š” **์ ์ง„์ (Incremental)** ์ฒ˜๋ฆฌ, ๊ทธ๋ฆฌ๊ณ  ๋ฉ”์ธ ์Šค๋ ˆ๋“œ ์‹คํ–‰์„ ๋ฐฉํ•ดํ•˜์ง€ ์•Š๊ณ  ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ GC๋ฅผ ๋™์‹œ์— ์ˆ˜ํ–‰ํ•˜๋Š” **๋™์‹œ(Concurrent)** ๊ธฐ๋ฒ•์„ ๋„์ž…ํ•˜์—ฌ ์ง€์—ฐ(Latency)๊ณผ ๋ฒ„๋ฒ…๊ฑฐ๋ฆผ์„ ํš๊ธฐ์ ์œผ๋กœ ์ค„์˜€์Šต๋‹ˆ๋‹ค [33-38]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Programming & Language ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** [[แ„†แ…ฆแ„†แ…ฉแ„…แ…ต แ„‚แ…ฎแ„‰แ…ฎ(Memory Leak)|๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ (Memory Leak)]], [[แ„’แ…ตแ†ธ แ„†แ…ฆแ„†แ…ฉแ„…แ…ต(Heap Memory)|ํž™ ๋ฉ”๋ชจ๋ฆฌ (Heap Memory)]], [[V8 แ„‹แ…ฆแ†ซแ„Œแ…ตแ†ซ (V8 Engine)|V8 ์—”์ง„ (V8 Engine)]], [[Stop-the-world|Stop-The-World]] - **Projects/Contexts:** V8 Orinoco ํ”„๋กœ์ ํŠธ, [[Node.js|Node.js]], IBM Eclipse OpenJ9 - **Contradictions/Notes:** ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์€ ํ”„๋กœ๊ทธ๋ž˜๋จธ์—๊ฒŒ์„œ ์ˆ˜๋™ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์— ๋Œ€ํ•œ ๋ถ€๋‹ด์„ ๋œ์–ด์ฃผ์–ด ๋Œ€๊ทœ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋‚˜ ์˜ค๋ฅ˜๋ฅผ ํš๊ธฐ์ ์œผ๋กœ ์ค„์—ฌ์ฃผ๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ, ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์‹œ์ ์— ๋Œ€ํ•œ ์ œ์–ด๊ถŒ์„ ์žƒ๊ฒŒ ๋˜๋ฉฐ C/C++ ๊ฐ™์€ ์–ธ์–ด์™€ ๋น„๊ตํ•  ๋•Œ ํฌ์ธํ„ฐ๋ฅผ ์‹๋ณ„ํ•˜๊ณ  ๋งˆํ‚นํ•˜๋Š” ๋“ฑ ๋Ÿฐํƒ€์ž„ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค๋Š” ๋‹จ์ ๋„ ๊ณต์กดํ•ฉ๋‹ˆ๋‹ค [3, 4]. --- *Last updated: 2026-04-19* - Raw Source: 00_Raw/2026-04-20/๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ (Garbage Collection).md ---