--- id: P-REINFORCE-AUTO-04124F category: "10_Wiki/๐Ÿ’ก Topics/Programming & Language" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - Scavenger ์•Œ๊ณ ๋ฆฌ์ฆ˜" --- # [[Scavenger แ„‹แ…กแ†ฏแ„€แ…ฉแ„…แ…ตแ„Œแ…ณแ†ท|Scavenger ์•Œ๊ณ ๋ฆฌ์ฆ˜]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > Scavenger ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ V8 JavaScript ์—”์ง„์—์„œ ์ƒˆ๋กœ์šด ๊ฐ์ฒด๊ฐ€ ์ฃผ๋กœ ํ• ๋‹น๋˜๋Š” '์ƒˆ๋กœ์šด ๊ณต๊ฐ„(New-space)'์˜ ๊ฐ€๋น„์ง€๋ฅผ ์ˆ˜์ง‘ํ•˜๋Š” ๋งˆ์ด๋„ˆ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜(Minor GC) ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค [1-3]. ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๊ณต๊ฐ„์„ ๋‘ ๊ฐœ์˜ ๋™์ผํ•œ ํฌ๊ธฐ(to-space์™€ from-space)๋กœ ๋‚˜๋ˆ„๊ณ  ์‚ด์•„๋‚จ์€ ํ™œ์„ฑ ๊ฐ์ฒด๋งŒ ์ƒˆ๋กœ์šด ๊ณต๊ฐ„์œผ๋กœ ๋ณต์‚ฌํ•˜์—ฌ ์••์ถ•ํ•˜๋Š” ์„ธ๋ฏธ์ŠคํŽ˜์ด์Šค(semi-space) ๋ฐฉ์‹์„ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ ๋‹จํŽธํ™”๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ  ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํšŒ์ˆ˜ํ•ฉ๋‹ˆ๋‹ค [3-5]. ์ตœ๊ทผ์˜ V8 ์—”์ง„์—์„œ๋Š” Orinoco ํ”„๋กœ์ ํŠธ๋ฅผ ํ†ตํ•ด ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์™€ ํ—ฌํผ ์Šค๋ ˆ๋“œ์— ์ž‘์—…์„ ๋ถ„์‚ฐ์‹œํ‚ค๋Š” ๋ณ‘๋ ฌ(Parallel) ๋ฐฉ์‹์œผ๋กœ ์ง„ํ™”ํ•˜์—ฌ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์˜ ์ผ์‹œ ์ •์ง€ ์‹œ๊ฐ„์„ ํš๊ธฐ์ ์œผ๋กœ ๋‹จ์ถ•์‹œ์ผฐ์Šต๋‹ˆ๋‹ค [6-8]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) * **์„ธ๋ฏธ์ŠคํŽ˜์ด์Šค(Semi-space) ์„ค๊ณ„ ๋ฐ ์ž‘๋™ ์›๋ฆฌ:** V8์˜ ์ƒˆ๋กœ์šด ๊ณต๊ฐ„(New-space ํ˜น์€ Young generation)์€ Cheney์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๊ธฐ๋ฐ˜ํ•˜์—ฌ 'to-space'์™€ 'from-space'๋ผ๋Š” ๋‘ ๊ฐœ์˜ ๋™์ผํ•œ ํฌ๊ธฐ์˜ ์„ธ๋ฏธ์ŠคํŽ˜์ด์Šค๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค [3-5, 9]. ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์€ ํ• ๋‹น ํฌ์ธํ„ฐ๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ๋ฐฉ์‹์œผ๋กœ ๋น ๋ฅด๊ฒŒ ์ด๋ฃจ์–ด์ง€๋ฉฐ, ํ• ๋‹น ํฌ์ธํ„ฐ๊ฐ€ ๊ณต๊ฐ„์˜ ๋์— ๋„๋‹ฌํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•ด์ง€๋ฉด Scavenge ์ฃผ๊ธฐ๊ฐ€ ํŠธ๋ฆฌ๊ฑฐ๋ฉ๋‹ˆ๋‹ค [1, 5, 10]. * **ํ™œ์„ฑ ๊ฐ์ฒด ๋Œ€ํ”ผ(Evacuation) ๋ฐ ์••์ถ•(Compaction):** ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์ด ์‹œ์ž‘๋˜๋ฉด ๋ฃจํŠธ ๊ฐ์ฒด๋กœ๋ถ€ํ„ฐ ๋„๋‹ฌ ๊ฐ€๋Šฅํ•œ ํ™œ์„ฑ ๊ฐ์ฒด๋ฅผ ์‹๋ณ„ํ•œ ๋’ค, ์ด๋“ค์„ from-space์—์„œ to-space๋กœ ๋ณต์‚ฌ(๋Œ€ํ”ผ)ํ•ฉ๋‹ˆ๋‹ค [3-5, 11]. ์ด ๊ณผ์ •์—์„œ ๊ฐ์ฒด๋“ค์ด ์—ฐ์†๋œ ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก์œผ๋กœ ์••์ถ•๋˜๋ฏ€๋กœ ์บ์‹œ ์ง€์—ญ์„ฑ์ด ํ–ฅ์ƒ๋˜๊ณ  ๋ฉ”๋ชจ๋ฆฌ ๋‹จํŽธํ™”(Fragmentation)๊ฐ€ ์™„์ „ํžˆ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค [4, 11, 12]. ๋ณต์‚ฌ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ๋‚จ์€ from-space์˜ ๋ฐ์ดํ„ฐ๋Š” ๋ชจ๋‘ ๊ฐ€๋น„์ง€๋กœ ๊ฐ„์ฃผ๋˜์–ด ๋ฒ„๋ ค์ง€๋ฉฐ, ๋‘ ๊ณต๊ฐ„์˜ ์—ญํ• ์ด ๊ต์ฒด๋ฉ๋‹ˆ๋‹ค [11-15]. * **์„ธ๋Œ€ ๊ฐ€์„ค์— ๋”ฐ๋ฅธ ๊ฐ์ฒด ์Šน๊ฒฉ (Promotion):** Scavenger ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋Œ€๋ถ€๋ถ„์˜ ๊ฐ์ฒด๊ฐ€ ์ผ์ฐ ์†Œ๋ฉธํ•œ๋‹ค๋Š” '์„ธ๋Œ€ ๊ฐ€์„ค(Generational Hypothesis)'์„ ๋ฐ”ํƒ•์œผ๋กœ ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค [1, 16]. ๋”ฐ๋ผ์„œ Scavenge ์ฃผ๊ธฐ๋ฅผ ๋‘ ๋ฒˆ ์ƒ์กดํ•œ ๊ฐ์ฒด๋Š” ๋” ์ด์ƒ ์ƒˆ๋กœ์šด ๊ณต๊ฐ„์— ๋จธ๋ฌผ์ง€ ์•Š๊ณ  ์žฅ๊ธฐ ๋ณด๊ด€์„ ์œ„ํ•ด '์˜ค๋ž˜๋œ ๊ณต๊ฐ„(Old-space)'์œผ๋กœ ์Šน๊ฒฉ(Promoted)๋ฉ๋‹ˆ๋‹ค [1, 11, 17, 18]. * **์“ฐ๊ธฐ ์žฅ๋ฒฝ (Write Barriers)์˜ ํ™œ์šฉ:** ์˜ค๋ž˜๋œ ๊ณต๊ฐ„(Old-space)์˜ ๊ฐ์ฒด๊ฐ€ ์ƒˆ๋กœ์šด ๊ณต๊ฐ„(New-space)์˜ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด, V8์€ ์ „์ฒด ์˜ค๋ž˜๋œ ๊ณต๊ฐ„์„ ์Šค์บ”ํ•˜๋Š” ๋Œ€์‹  '์“ฐ๊ธฐ ์žฅ๋ฒฝ(Write Barriers)'์„ ํ™œ์šฉํ•˜์—ฌ ์ฐธ์กฐ ํฌ์ธํ„ฐ์˜ ์œ„์น˜๋ฅผ ๊ธฐ์–ต ์ง‘ํ•ฉ(Store buffer ๋˜๋Š” Remembered set)์— ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค [12, 14, 15, 19]. ์ด๋ฅผ ํ†ตํ•ด Scavenge ์ˆ˜ํ–‰ ์‹œ ์Šค์บ” ๋น„์šฉ์„ ํš๊ธฐ์ ์œผ๋กœ ๋‚ฎ์ถฅ๋‹ˆ๋‹ค [12, 14]. * **๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ (Parallel Scavenger):** ๊ณผ๊ฑฐ์—๋Š” Cheney ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•œ ๋‹จ์ผ ์Šค๋ ˆ๋“œ ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ–ˆ์œผ๋‚˜, ๋ฉ€ํ‹ฐ์ฝ”์–ด ํ™˜๊ฒฝ์— ๋งž์ถฐ V8(Orinoco ๊ฐ€๋น„์ง€ ์ฝœ๋ ‰ํ„ฐ)์€ '๋ณ‘๋ ฌ Scavenger(Parallel Scavenger)'๋ฅผ ๋„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค [7, 20]. ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์™€ ์—ฌ๋Ÿฌ ํ—ฌํผ ์Šค๋ ˆ๋“œ๊ฐ€ ํฌ์ธํ„ฐ๋ฅผ ๋‚˜๋ˆ„์–ด ์ถ”์ ํ•˜๊ณ  ๋™์ ์œผ๋กœ ์ž‘์—… ํ›”์น˜๊ธฐ(work stealing)๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ, ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์—์„œ Scavenger๊ฐ€ ์†Œ๋ชจํ•˜๋Š” ์‹œ๊ฐ„์„ 20%~50% ๊ฐ์†Œ์‹œ์ผฐ์Šต๋‹ˆ๋‹ค [7, 8, 20, 21]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Programming & Language ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** [[แ„†แ…กแ„‹แ…ตแ„‚แ…ฅ แ„€แ…กแ„‡แ…ตแ„Œแ…ต แ„แ…ฅแ†ฏแ„…แ…ฆแ†จแ„‰แ…งแ†ซ(Minor GC)|Minor GC]], Young Generation, [[Cheney's Algorithm|Cheney's Algorithm]], Write Barriers, [[Orinoco|Orinoco]] - **Projects/Contexts:** V8 ์—”์ง„ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ (V8 Memory Management), ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ์ตœ์ ํ™” - **Contradictions/Notes:** ๊ณผ๊ฑฐ ๋ฒ„์ „์˜ V8์—์„œ๋Š” Scavenger๊ฐ€ ๋‹จ์ผ ์ฝ”์–ด ํ™˜๊ฒฝ์— ์ ํ•ฉํ•œ ์™„์ „ํ•œ ๋™๊ธฐ์‹ Cheney ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ–ˆ์œผ๋‚˜, ํ˜„์žฌ ํฌ๋กฌ ๋ฐ Node.js์˜ ๋ฉ€ํ‹ฐ์ฝ”์–ด ํ™˜๊ฒฝ ์š”๊ตฌ์— ๋งž์ถ”์–ด ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์™€ ์›Œ์ปค ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์ ์œผ๋กœ ์ž‘์—…์„ ๋ถ„๋ฐฐํ•˜๋Š” ๋ณ‘๋ ฌ(Parallel) ๋ณต์‚ฌ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๋กœ ์ง„ํ™”ํ–ˆ์Œ์ด ๊ธฐ๋ก๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค [10, 20]. --- *Last updated: 2026-04-19* - Raw Source: 00_Raw/2026-04-20/Scavenger ์•Œ๊ณ ๋ฆฌ์ฆ˜.md ---