--- id: P-REINFORCE-AUTO-735166 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(๋งˆ์ด๋„ˆ GC)" --- # [[Scavenger(๋งˆ์ด๋„ˆ GC)]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > ์ง€์‹ ์š”์•ฝ ์ •๋ณด ์ถ”์ถœ ์ค‘... ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) * **๋™์ž‘ ์›๋ฆฌ์™€ ์ฒด๋‹ˆ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (Cheney's Algorithm)** ๋Œ€๋ถ€๋ถ„์˜ Scavenge ๊ตฌํ˜„์€ ์ฒด๋‹ˆ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜(Cheney's algorithm)์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋ฐ˜๊ณต๊ฐ„(semi-space) ์„ค๊ณ„๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค [2, 4]. ์ƒˆ๋กœ์šด ๊ณต๊ฐ„์€ ํฌ๊ธฐ๊ฐ€ ๊ฐ™์€ ๋‘ ๊ฐœ์˜ ๊ณต๊ฐ„์ธ To-Space์™€ From-Space๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค [4, 6, 7]. ํ‰์†Œ์—๋Š” ๊ฐ์ฒด๊ฐ€ From-Space์— ํ• ๋‹น๋˜๋‹ค๊ฐ€ ์ด ๊ณต๊ฐ„์ด ๊ฐ€๋“ ์ฐจ๋ฉด, ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๋Š” From-Space์˜ ์‚ด์•„์žˆ๋Š” ๊ฐ์ฒด๋“ค์„ To-Space์˜ ์—ฐ์†๋œ ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก์œผ๋กœ ๋Œ€ํ”ผ(evacuate)์‹œํ‚ต๋‹ˆ๋‹ค [4, 5, 7]. ์ดํ›„ ์ฃฝ์€ ๊ฐ์ฒด๋“ค์ด ์žˆ๋Š” From-Space๋Š” ์™„์ „ํžˆ ๋น„์›Œ์ง€๋ฉฐ ๋‘ ๊ณต๊ฐ„์˜ ์—ญํ• ์ด ๋ฐ”๋€๋‹ˆ๋‹ค [5, 8, 9]. * **๊ฐ์ฒด ์ด๋™, ํฌ์ธํ„ฐ ์—…๋ฐ์ดํŠธ ๋ฐ ์Šน๊ฒฉ (Promotion)** ํ™œ์„ฑ ๊ฐ์ฒด๊ฐ€ ์ƒˆ ์œ„์น˜๋กœ ์ด๋™๋  ๋•Œ, ์›๋ž˜ ์œ„์น˜์—๋Š” ์ƒˆ๋กœ์šด ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์›Œ๋”ฉ ์ฃผ์†Œ(forwarding address)๊ฐ€ ๋‚จ๊ฒจ์ ธ ์ด๋ฅผ ์ฐธ์กฐํ•˜๋˜ ๋‹ค๋ฅธ ํฌ์ธํ„ฐ๋“ค์ด ์—…๋ฐ์ดํŠธ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค [9-11]. ๋‘ ๋ฒˆ์˜ ๋งˆ์ด๋„ˆ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ์ฃผ๊ธฐ(์Šค์บ๋นˆ์ง€)๋ฅผ ์ƒ์กดํ•œ ๊ฐ์ฒด๋“ค์€ ์žฅ๊ธฐ ๋ณด๊ด€์„ ์œ„ํ•ด '์˜ค๋ž˜๋œ ๊ณต๊ฐ„(Old Space ๋˜๋Š” Tenure ์˜์—ญ)'์œผ๋กœ ์Šน๊ฒฉ(Promoted)๋ฉ๋‹ˆ๋‹ค [1, 3, 5]. ๊ฐ์ฒด๋“ค์„ To-Space์˜ ํ•œ์ชฝ์œผ๋กœ ๋ชจ์œผ๋ฉด์„œ ๋‹จํŽธํ™”๊ฐ€ ํ•ด๊ฒฐ๋˜๋ฏ€๋กœ ์บ์‹œ ์ง€์—ญ์„ฑ์ด ํ–ฅ์ƒ๋˜๊ณ  ํ• ๋‹น ์†๋„๊ฐ€ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค [4]. * **๋ฃจํŠธ ์Šค์บ” ๋ฐ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ (Parallel Scavenging)** ๋งˆ์ด๋„ˆ GC๋Š” ๋งค์šฐ ์งง์€ ์‹œ๊ฐ„ ๋‚ด์— ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [4]. ์ด๋ฅผ ์œ„ํ•ด V8 ์—”์ง„์€ ๋‹ค์ˆ˜์˜ ๋„์šฐ๋ฏธ ์Šค๋ ˆ๋“œ(helper threads)๋ฅผ ํ™œ์šฉํ•œ ๋ณ‘๋ ฌ ์Šค์บ๋นˆ์ง•(Parallel scavenging) ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ, ๋ฃจํŠธ ์Šค์บ”, ์ Š์€ ์„ธ๋Œ€ ๋‚ด์˜ ๊ฐ์ฒด ๋ณต์‚ฌ, ์˜ค๋ž˜๋œ ์„ธ๋Œ€๋กœ์˜ ์Šน๊ฒฉ, ํฌ์ธํ„ฐ ์—…๋ฐ์ดํŠธ ์ž‘์—…์„ ๋ณ‘๋ ฌ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค [12-14]. ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์™€ ๋„์šฐ๋ฏธ ์Šค๋ ˆ๋“œ๋“ค์€ ์›์ž์ (atomic)์ธ ์ฝ๊ธฐ/์“ฐ๊ธฐ/๋น„๊ต ๊ตํ™˜(compare-and-swap) ์—ฐ์‚ฐ์„ ํ†ตํ•ด ๋™๊ธฐํ™”ํ•˜์—ฌ ๋™์ผํ•œ ๊ฐ์ฒด๊ฐ€ ์ค‘๋ณต ์ด๋™๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค [12]. * **IBM SDK ํ™˜๊ฒฝ์—์„œ์˜ ์Šค์บ๋นˆ์ง€** IBM์˜ gencon GC ์ •์ฑ… ๋“ฑ์—์„œ๋„ ์Šค์บ๋นˆ์ง€ ์ž‘์—…์ด ์กด์žฌํ•˜๋ฉฐ, ์ด๋Š” Nursery ์˜์—ญ์—์„œ ํ• ๋‹น ์‹คํŒจ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ํŠธ๋ฆฌ๊ฑฐ๋ฉ๋‹ˆ๋‹ค [3]. ๋ฃจํŠธ ์Šค์บ”์„ ํ†ตํ•ด ๋„๋‹ฌ ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด๋ฅผ ์ฐพ๊ณ  ์Šคํƒ์— ๋‹ด์€ ๋’ค ๊ณ„์ธต์  ์Šค์บ” ์ˆœ์„œ(hierarchical scan ordering)๋ฅผ ์‚ฌ์šฉํ•ด ์ถ”์ ํ•˜๋ฉฐ, ์‚ด์•„์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ํ• ๋‹น ๊ณต๊ฐ„์—์„œ Survivor ๊ณต๊ฐ„์ด๋‚˜ Tenure ์˜์—ญ์œผ๋กœ ๋ณต์‚ฌํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค [3]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Programming & Language ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** [[New Space(Young Generation)]], [[Cheney's Algorithm]], [[Promotion(์Šน๊ฒฉ)]], [[Major GC(Mark-Sweep/Mark-Compact)]] - **Projects/Contexts:** [[V8 JavaScript Engine]], [[IBM SDK (gencon GC policy)]] - **Contradictions/Notes:** ์†Œ์Šค ๊ฐ„์˜ ๋‚ด์šฉ ๋ชจ์ˆœ์€ ๋ฐœ๊ฒฌ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. V8 ์—”์ง„์˜ ๋งˆ์ด๋„ˆ GC ๋ฉ”์ปค๋‹ˆ์ฆ˜๊ณผ IBM SDK(gencon ์ •์ฑ…)์˜ ์Šค์บ๋นˆ์ง€ ์ž‘์—…์€ ๊ตฌํ˜„ ํ™˜๊ฒฝ์€ ๋‹ค๋ฅด์ง€๋งŒ, ๋ชจ๋‘ '์ฃผ๋กœ ์ƒˆ๋กญ๊ฒŒ ํ• ๋‹น๋˜๋Š” ์ž‘์€ ๊ณต๊ฐ„์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜์—ฌ ๋น ๋ฅธ ์ฃผ๊ธฐ๋กœ ์‚ด์•„์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ๋ณต์‚ฌ ๋ฐ ์Šน๊ฒฉํ•œ๋‹ค'๋Š” ๊ณตํ†ต๋œ ์—ญํ• ์„ ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. --- *Last updated: 2026-04-19* - Raw Source: [[00_Raw/2026-04-20/Scavenger(๋งˆ์ด๋„ˆ GC).md]] ---