--- id: wiki-2026-0508-gc-root title: GC Root category: 10_Wiki/Topics status: needs_review canonical_id: self aliases: [P-Reinforce-AUTO-31335C] duplicate_of: none source_trust_level: A confidence_score: 0.9 tags: [auto-reinforced] raw_sources: [] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - GC Root" inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08) tech_stack: language: unspecified framework: unspecified --- # [[GC Root]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > GC Root(๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ๋ฃจํŠธ)๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ๋‚ด์—์„œ ์‚ฌ์šฉ ์ค‘์ธ ์‚ด์•„์žˆ๋Š”(live) ๊ฐ์ฒด๋ฅผ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด ์ฐธ์กฐ ์ถ”์ ์„ ์‹œ์ž‘ํ•˜๋Š” ๊ธฐ์ค€์  ์—ญํ• ์„ ํ•˜๋Š” ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค [1-3]. ํž™(heap) ์™ธ๋ถ€์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด๋กœ์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ด์•„์žˆ๋Š” ๊ฒƒ์œผ๋กœ ์ •์˜๋˜๋ฉฐ, ํž™ ๋‚ด๋ถ€์˜ ๋‹ค๋ฅธ ๊ฐ์ฒด๋“ค์ด ๋ฉ”๋ชจ๋ฆฌ ํšŒ์ˆ˜ ๋Œ€์ƒ์—์„œ ์ œ์™ธ๋˜๋ ค๋ฉด ๋ฐ˜๋“œ์‹œ ์ด ๋ฃจํŠธ ๊ฐ์ฒด๋กœ๋ถ€ํ„ฐ ์‹œ์ž‘๋˜๋Š” ํฌ์ธํ„ฐ ์ฒด์ธ์„ ํ†ตํ•ด ๋„๋‹ฌ ๊ฐ€๋Šฅ(reachable)ํ•˜๊ฒŒ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [1, 2, 4]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) - **GC ๋ฃจํŠธ์˜ ์ •์˜์™€ ์ฃผ์š” ์ข…๋ฅ˜:** GC ๋ฃจํŠธ๋Š” V8 ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์ด๋‚˜ ์›น ๋ธŒ๋ผ์šฐ์ €, ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹ (VM) ์™ธ๋ถ€์—์„œ ์ง์ ‘ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ์ฒด๋“ค์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค [1]. ์ฃผ์š” ์ข…๋ฅ˜๋กœ๋Š” ํ˜ธ์ถœ ์Šคํƒ(stack)์— ์กด์žฌํ•˜๋Š” ๋กœ์ปฌ ๋ณ€์ˆ˜, ํ•ญ์ƒ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•œ ์ „์—ญ ๊ฐ์ฒด(Global objects), ํด๋ž˜์Šค ์ •์  ํ•„๋“œ(class static field), JNI ์ฐธ์กฐ, ๊ทธ๋ฆฌ๊ณ  ๋ธŒ๋ผ์šฐ์ €์˜ DOM ์š”์†Œ ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค [1, 2]. ์›น ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ์˜ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜์™€ ๊ด€๋ จํ•˜์—ฌ ์ฐฝ(window), ํ™œ์„ฑ ํด๋กœ์ €(active closures), ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ, ํƒ€์ด๋จธ ๋“ฑ๋„ ๋ฃจํŠธ ์—ญํ• ์„ ํ•˜์—ฌ ์—ฐ๊ด€๋œ ๊ฐ์ฒด๋“ค์ด ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ•ด์ œ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค [5]. - **๋งˆํ‚น ๋ฐ ์ถ”์  ๊ณผ์ •(Marking and Tracing):** [[Mark-Sweep]] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋“ฑ์—์„œ ์‚ด์•„์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ์ฐพ๋Š” ๊ณผ์ •์€ ๋ฃจํŠธ ์„ธํŠธ(root set)์—์„œ ์ถœ๋ฐœํ•ฉ๋‹ˆ๋‹ค [3]. ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ์˜ ์ดˆ๊ธฐ ๋‹จ๊ณ„์—์„œ ๋ฃจํŠธ ์Šค์บ”์„ ์‹คํ–‰ํ•˜์—ฌ ๋ชจ๋“  ๋ฃจํŠธ ๊ฐ์ฒด๋ฅผ ์‹๋ณ„ํ•˜๊ณ , ์ด๋ฅผ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ์ž‘์—… ์Šคํƒ(work stack)์— ํ‘ธ์‹œํ•ฉ๋‹ˆ๋‹ค [2]. ๊ทธ๋Ÿฐ ๋‹ค์Œ GC๋Š” ๋ฃจํŠธ ๊ฐ์ฒด์—์„œ ์‹œ์ž‘ํ•ด ๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ชจ๋“  ํฌ์ธํ„ฐ๋ฅผ ์žฌ๊ท€์ ์œผ๋กœ ์ถ”์ ํ•˜์—ฌ ๋„๋‹ฌ ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด๋“ค์„ ๋งˆํ‚น(Mark)ํ•ฉ๋‹ˆ๋‹ค [2, 3]. ๋ฃจํŠธ๋กœ๋ถ€ํ„ฐ ๋„๋‹ฌํ•  ์ˆ˜ ์—†๋Š” ๋‚˜๋จธ์ง€ ๋ชจ๋“  ๊ฒƒ๋“ค์€ ๊ฐ€๋น„์ง€๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค [4, 6]. - **๋งˆ์ด๋„ˆ GC๋ฅผ ์œ„ํ•œ ํŠน์ˆ˜ ๋ฃจํŠธ(V8 [[Scavenge]]r):** V8 ์—”์ง„์˜ ์ Š์€ ์„ธ๋Œ€(young generation)๋ฅผ ์ˆ˜์ง‘ํ•˜๋Š” ๋งˆ์ด๋„ˆ GC(Scavenger)์˜ ๊ฒฝ์šฐ, GC๊ฐ€ ์‹คํ–‰๋  ๋•Œ๋งˆ๋‹ค ์ „์ฒด ๊ตฌ์„ธ๋Œ€(old generation) ํž™์„ ๋ชจ๋‘ ์Šค์บ”ํ•˜๋Š” ๋น„ํšจ์œจ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ์“ฐ๊ธฐ ์žฅ๋ฒฝ([[Write Barrier]]s)์„ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค [7]. ์ด๋ฅผ ํ†ตํ•ด ๊ตฌ์„ธ๋Œ€์—์„œ ์ Š์€ ์„ธ๋Œ€๋กœ ํ–ฅํ•˜๋Š” ์ฐธ์กฐ(old-to-new [[Reference]]s) ๋ชฉ๋ก์„ ์œ ์ง€ํ•˜๋ฉฐ, ์ด๋ฅผ ์Šคํƒ ๋ฐ ์ „์—ญ ๋ณ€์ˆ˜ ๋“ฑ๊ณผ ๊ฒฐํ•ฉํ•˜์—ฌ ์ Š์€ ์„ธ๋Œ€ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์„ ์œ„ํ•œ ์ถ”๊ฐ€์ ์ธ ๋ฃจํŠธ ์„ธํŠธ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค [7]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & Updates) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Programming & Language ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** [[Garbage Collection]], Mark-Sweep Algorithm, [[memory]] Leak, Reachability - **Projects/Contexts:** [[V8 Engine]], IBM SDK Java Technology - **Contradictions/Notes:** ์†Œ์Šค์— ๋”ฐ๋ฅด๋ฉด V8 ์—”์ง„([[JavaScript]])๊ณผ IBM Java ๊ตฌํ˜„ ๋ชจ๋‘ GC ๋ฃจํŠธ๋ฅผ ํ†ตํ•œ ์ฐธ์กฐ ์ถ”์ ์ด๋ผ๋Š” ํ•ต์‹ฌ ์›๋ฆฌ๋ฅผ ๊ณต์œ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ ์‹คํ–‰ ํ™˜๊ฒฝ์˜ ์ฐจ์ด์— ๋”ฐ๋ผ V8์€ DOM ์š”์†Œ๋‚˜ ํด๋กœ์ € ๋“ฑ์„ ์ฃผ๋กœ ๋‹ค๋ฃจ๊ณ  [1, 5], Java๋Š” JNI ์ฐธ์กฐ๋‚˜ ํด๋ž˜์Šค ์ •์  ํ•„๋“œ ๋“ฑ์„ ๋‹ค๋ฃฌ๋‹ค๋Š” ์„ธ๋ถ€์ ์ธ ํŠน์„ฑ์˜ ์ฐจ์ด๋ฅผ ๋ณด์ž…๋‹ˆ๋‹ค [2]. --- *Last updated: 2026-04-19* --- ## ๐Ÿค– LLM ํ™œ์šฉ ํžŒํŠธ (How to Use This Knowledge) **์–ธ์ œ ์ด ์ง€์‹์„ ์“ฐ๋Š”๊ฐ€:** - *(TODO)* **์–ธ์ œ ์“ฐ๋ฉด ์•ˆ ๋˜๋Š”๊ฐ€:** - *(TODO)* ## ๐Ÿงช ๊ฒ€์ฆ ์ƒํƒœ (Validation) - **์ •๋ณด ์ƒํƒœ:** needs_review - **์ถœ์ฒ˜ ์‹ ๋ขฐ๋„:** A - **๊ฒ€ํ†  ์ด์œ :** *(P-Reinforce Phase 1 ์ž๋™ ์ •๊ทœํ™”. ๋ณธ๋ฌธ ๊ฒ€์ฆ ํ•„์š”.)* ## ๐Ÿงฌ ์ค‘๋ณต ๊ฒ€์‚ฌ (Duplicate Check) - **๊ธฐ์กด ์œ ์‚ฌ ๋ฌธ์„œ:** *(TODO: ์ธ๋ฑ์„œ ํด๋Ÿฌ์Šคํ„ฐ ๋ฆฌํฌํŠธ ์ฐธ์กฐ)* - **์ฒ˜๋ฆฌ ๋ฐฉ์‹:** UPDATE (์ž๋™ ์ •๊ทœํ™”) - **์ฒ˜๋ฆฌ ์ด์œ :** Phase 1 ์ •๊ทœํ™” โ€” ์˜› ํ…œํ”Œ๋ฆฟ/๋ˆ„๋ฝ ํ•„๋“œ ๋ณด๊ฐ•. ## ๐Ÿ•“ ๋ณ€๊ฒฝ ์ด๋ ฅ (Changelog) | ๋‚ ์งœ | ๋ณ€๊ฒฝ ๋‚ด์šฉ | ์ฒ˜๋ฆฌ ๋ฐฉ์‹ | ์‹ ๋ขฐ๋„ | |------|-----------|-----------|--------| | 2026-05-08 | P-Reinforce Phase 1 ์ •๊ทœํ™” (frontmatter + ํ—ค๋” ํ‘œ์ค€ํ™”) | UPDATE | A | ## ๐Ÿ’ป ์ฝ”๋“œ ํŒจํ„ด (Code Patterns) **ํŒจํ„ด 1:** *(TODO: ์ด ํ”„๋กœ์ ํŠธ ์ปจ๋ฒค์…˜ ๋ฐ˜์˜ํ•œ ๊ตฌ์กฐ ์Šค์ผˆ๋ ˆํ†ค)* ```text # TODO ``` ## ๐Ÿค” ์˜์‚ฌ๊ฒฐ์ • ๊ธฐ์ค€ (Decision Criteria) **์„ ํƒ A๋ฅผ ์จ์•ผ ํ•  ๋•Œ:** - *(TODO)* **์„ ํƒ B๋ฅผ ์จ์•ผ ํ•  ๋•Œ:** - *(TODO)* **๊ธฐ๋ณธ๊ฐ’:** > *(TODO)* ## โŒ ์•ˆํ‹ฐํŒจํ„ด (Anti-Patterns) - **[์•ˆํ‹ฐํŒจํ„ด]:** *(TODO: ๋ฌด์—‡์„ ํ•˜๋ฉด ์•ˆ ๋˜๋Š”๊ฐ€ + ์ด์œ  + ๋Œ€์‹  ๋ฌด์—‡์„)*