--- id: P-REINFORCE-AUTO-6C336D 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 (GC) ์ตœ์ ํ™”" --- # [[Garbage Collection (GC) ์ตœ์ ํ™”]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > ์ง€์‹ ์š”์•ฝ ์ •๋ณด ์ถ”์ถœ ์ค‘... ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) **1. GC ์ŠคํŒŒ์ดํฌ์™€ ํ”„๋ ˆ์ž„ ๋“œ๋ž(Stop-the-world) ์›์ธ** ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์˜ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ(GC)๋Š” ์ž๋™ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ์ œ๊ณตํ•˜์ง€๋งŒ, ์‹ค์‹œ๊ฐ„ ์ƒํ˜ธ์ž‘์šฉ์ด ํ•„์š”ํ•œ ๊ฒŒ์ž„์ด๋‚˜ ๊ณ ์„ฑ๋Šฅ ๋ Œ๋”๋ง ํ™˜๊ฒฝ์—์„œ๋Š” ๋ถˆ๊ทœ์น™ํ•œ 'Stop-the-world(์ผ์‹œ ์ •์ง€)' ํ˜„์ƒ์„ ์œ ๋ฐœํ•˜๋Š” ์ฃผ๋ฒ”์ด ๋ฉ๋‹ˆ๋‹ค. ์งง์€ ์‹œ๊ฐ„ ์•ˆ์— ์ˆ˜๋งŽ์€ ๊ฐ์ฒด๋ฅผ ๋ฌด๋ถ„๋ณ„ํ•˜๊ฒŒ ์ƒ์„ฑํ•˜๊ณ  ์‚ญ์ œํ•˜๋ฉด, ํž™ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํŒŒํŽธํ™”๋˜๊ณ  ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ •๋ฆฌํ•˜๋А๋ผ ์‹œ์Šคํ…œ ์ž์›์„ ์†Œ๋ชจํ•˜๊ฒŒ ๋˜์–ด ํ™”๋ฉด์ด ๋š๋š ๋Š๊ธฐ๋Š” ์ง€์—ฐ(Lag)์ด๋‚˜ ํ”„๋ฆฌ์ง• ํ˜„์ƒ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. **2. ๋ Œ๋”๋ง ๋ฃจํ”„(Render Loop) ๋‚ด๋ถ€์˜ ๊ฐ์ฒด ์ƒ์„ฑ ๊ธˆ์ง€** ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์ œ์–ดํ•˜๋Š” `requestAnimationFrame`์ด๋‚˜ React Three Fiber์˜ `useFrame` ๊ฐ™์€ ํ•ต์‹ฌ ๊ฒŒ์ž„ ๋ฃจํ”„ ๋‚ด๋ถ€์—์„œ ์ƒˆ๋กœ์šด ๊ฐ์ฒด(์˜ˆ: `new Vector3()`)๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ์ƒ์„ฑํ•˜๋ฉด ๋Š์ž„์—†๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์ด ํŠธ๋ฆฌ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด ๋ฃจํ”„ ์™ธ๋ถ€์—์„œ ๋ฏธ๋ฆฌ ๊ฐ์ฒด๋ฅผ ํ• ๋‹นํ•ด ๋‘๊ฑฐ๋‚˜(`useMemo` ๋“ฑ ํ™œ์šฉ), ๊ฐ์ฒด์˜ ์†์„ฑ๊ฐ’๋งŒ ๋ฎ์–ด์”Œ์›Œ ๊ฐฑ์‹ (Direct mutation)ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์žฌ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. **3. ์˜ค๋ธŒ์ ํŠธ ํ’€๋ง(Object Pooling)์˜ ์ ๊ทน ๋„์ž…** ํƒ„ํ™˜, ํŒŒํ‹ฐํด, ์  ์บ๋ฆญํ„ฐ ๋“ฑ ์ƒ์„ฑ๊ณผ ํŒŒ๊ดด๊ฐ€ ๋งค์šฐ ๋นˆ๋ฒˆํ•œ ๊ฐ์ฒด๋Š” **์˜ค๋ธŒ์ ํŠธ ํ’€(Object Pool)**์ด๋ผ๋Š” ๊ณ ์ •๋œ ํฌ๊ธฐ์˜ ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค. ๋กœ๋”ฉ ์‹œ์ ์— ํ•„์š”ํ•œ ๊ฐ์ฒด๋ฅผ ๋ฏธ๋ฆฌ ์ƒ์„ฑํ•ด ๋‘๊ณ , ๊ฒŒ์ž„ ์ค‘์—๋Š” ์‚ญ์ œ(Free)ํ•˜์ง€ ์•Š์€ ์ฑ„ ํ™œ์„ฑ/๋น„ํ™œ์„ฑ ์ƒํƒœ๋งŒ ๋ณ€๊ฒฝํ•˜์—ฌ ๋Œ๋ ค ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ๋Ÿฐํƒ€์ž„ ์ค‘์˜ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ๋ฐ ํ•ด์ œ ํšŸ์ˆ˜๊ฐ€ '0'์— ๊ฐ€๊นŒ์›Œ์ ธ GC๋กœ ์ธํ•œ ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ๊ทน์ ์œผ๋กœ ๋ง‰์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. **4. ์„ธ๋Œ€๋ณ„ GC(Generational GC) ํŠน์„ฑ์„ ๊ณ ๋ คํ•œ ์ฃผ์˜์‚ฌํ•ญ** ์ตœ์‹  ๋ธŒ๋ผ์šฐ์ €(V8 ์—”์ง„ ๋“ฑ)๋Š” **์„ธ๋Œ€๋ณ„ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜(Generational GC)**์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ, ์ƒ์„ฑ ํ›„ ๊ธˆ๋ฐฉ ๋ฒ„๋ ค์ง€๋Š” ๋‹จ๊ธฐ ์ƒ์กด ๊ฐ์ฒด(Short-lived garbage)๋Š” ์‚ฌ์‹ค์ƒ ๊ฑฐ์˜ ๋น„์šฉ ์—†์ด ํšŒ์ˆ˜๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฌด๋ถ„๋ณ„ํ•˜๊ฒŒ ๋ชจ๋“  ๊ฐ์ฒด๋ฅผ ํ’€๋งํ•  ๊ฒฝ์šฐ, ์˜คํžˆ๋ ค ๊ฐ์ฒด๋“ค์ด ๋ฉ”๋ชจ๋ฆฌ์— ๊ณ„์† ์ƒ์ฃผํ•˜๋Š” '์žฅ๊ธฐ ์ƒ์กด ๊ฐ์ฒด'๋กœ ์ทจ๊ธ‰๋˜์–ด ๊ตฌ์„ธ๋Œ€(Old generation) ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์••๋ฐ•ํ•˜๊ณ  GC ์„ฑ๋Šฅ์„ ์•…ํ™”์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋ธŒ์ ํŠธ ํ’€๋ง์€ ๋ฐ˜๋“œ์‹œ ํ”„๋กœํŒŒ์ผ๋ง์„ ํ†ตํ•ด ๊ฐ์ฒด ์ƒ์„ฑ ๋น„์šฉ์ด ์ง„์งœ ๋ณ‘๋ชฉ์œผ๋กœ ํŒ๋ช…๋œ ๊ฒฝ์šฐ์—๋งŒ ์„ ๋ณ„์ ์œผ๋กœ ๋„์ž…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Programming & Language ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** [[Object Pooling (์˜ค๋ธŒ์ ํŠธ ํ’€๋ง)]], [[Memory Leak Prevention (๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ๋ฐฉ์ง€)]], [[Generational GC (์„ธ๋Œ€๋ณ„ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜)]], [[React Three Fiber (R3F) ์ž์‚ฐ ์ตœ์ ํ™”]] - **Projects/Contexts:** [[์ˆ˜๋งŒ ๊ฐœ์˜ ์—”ํ‹ฐํ‹ฐ๊ฐ€ ์กด์žฌํ•˜๋Š” ์‹ค์‹œ๊ฐ„ ๋ฌผ๋ฆฌ ์‹œ๋ฎฌ๋ ˆ์ด์…˜]], [[๋Œ€๊ทœ๋ชจ ํŒŒํ‹ฐํด ์‹œ์Šคํ…œ ์ตœ์ ํ™”]] - **Contradictions/Notes:** ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์˜ ๋ฉˆ์ถค ํ˜„์ƒ์„ ๊ทน๋„๋กœ ํ”ผํ•ด์•ผ ํ•˜๋Š” ํ™˜๊ฒฝ(์˜ˆ: AAA๊ธ‰ ์›น ๊ฒŒ์ž„)์—์„œ๋Š” ECS(์—”ํ‹ฐํ‹ฐ ์ปดํฌ๋„ŒํŠธ ์‹œ์Šคํ…œ)์™€ ๊ฐ™์ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋ณธ ๊ฐ์ฒด๊ฐ€ ์•„๋‹Œ, ์—ฐ์†๋œ `TypedArray` ํ˜•ํƒœ์˜ ๋ฉ”๋ชจ๋ฆฌ ๋ฒ„ํผ(SoA)๋ฅผ ์ง์ ‘ ๋‹ค๋ฃจ๋Š” ๋ฐ์ดํ„ฐ ์ง€ํ–ฅ ์„ค๊ณ„(Data-Oriented Design)๋ฅผ ํ†ตํ•ด GC ์ž์ฒด๋ฅผ ์›์ฒœ ์šฐํšŒํ•˜๋Š” ์„ค๊ณ„๊ฐ€ ํ™œ์šฉ๋˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. - Raw Source: [[00_Raw/2026-04-20/Garbage Collection (GC) ์ตœ์ ํ™”.md]] ---