--- id: P-REINFORCE-AUTO-F4D557 category: "10_Wiki/๐Ÿ’ก Topics/Programming & Language" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - ๋ธŒ๋ผ์šฐ์ € ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๋ฐ ์ตœ์ ํ™”" --- # [[แ„‡แ…ณแ„…แ…กแ„‹แ…ฎแ„Œแ…ฅ แ„†แ…ฆแ„†แ…ฉแ„…แ…ต แ„€แ…ชแ†ซแ„…แ…ต แ„†แ…ตแ†พ แ„Žแ…ฌแ„Œแ…ฅแ†จแ„’แ…ช|๋ธŒ๋ผ์šฐ์ € ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๋ฐ ์ตœ์ ํ™”]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > ๋ธŒ๋ผ์šฐ์ € ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋Š” ๋” ์ด์ƒ ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฐ์ฒด์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ž๋™์œผ๋กœ ํšŒ์ˆ˜ํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ ์ €ํ•˜๋‚˜ ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•˜๋Š” ํ•ต์‹ฌ ๊ณผ์ •์ด๋‹ค [1-3]. V8 ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ํž™(Heap) ๊ณต๊ฐ„์„ ์—ฌ๋Ÿฌ ์„ธ๋Œ€๋กœ ๋‚˜๋ˆ„๊ณ  ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜(GC)์„ ํ†ตํ•ด ๋™์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค [4-6]. ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ฃผ์š” ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์‹ค์ˆ˜๋กœ ๋‚จ๊ฒจ๋‘” ์ฐธ์กฐ(DOM ๋…ธ๋“œ, ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ, ํด๋กœ์ € ๋“ฑ) ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•˜๋ฉฐ, ์ด๋ฅผ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•ด Chrome DevTools์˜ ํž™ ์Šค๋ƒ…์ƒท ๋ฐ ํ• ๋‹น ํƒ€์ž„๋ผ์ธ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ˆ„์ˆ˜ ์›์ธ์„ ์‹๋ณ„ํ•˜๊ณ  ํ•ด๊ฒฐํ•ด์•ผ ํ•œ๋‹ค [2, 7-9]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) - **V8 ์—”์ง„์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ์™€ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜(GC):** V8์€ ํž™์„ 'New-space(Young Generation)'์™€ 'Old-space(Old Generation)' ๋“ฑ์œผ๋กœ ๋‚˜๋ˆ„์–ด ์„ธ๋Œ€๋ณ„ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์„ ์ˆ˜ํ–‰ํ•œ๋‹ค [4-6, 10, 11]. New-space์—์„œ๋Š” ์ฃผ๋กœ ์งง์€ ์ˆ˜๋ช…์ฃผ๊ธฐ๋ฅผ ๊ฐ€์ง„ ๊ฐ์ฒด๋“ค์ด ํ• ๋‹น๋˜๋ฉฐ, Scavenger(Minor GC) ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ†ตํ•ด ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋น ๋ฅด๊ฒŒ ํšŒ์ˆ˜ํ•˜๊ณ  ์‚ด์•„๋‚จ์€ ๊ฐ์ฒด๋Š” Old-space๋กœ ์Šน๊ฒฉ(promote)์‹œํ‚จ๋‹ค [4, 12-14]. Old-space์—์„œ๋Š” Mark-Sweep ๋ฐ Mark-Compact(Major GC) ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋„๋‹ฌํ•  ์ˆ˜ ์—†๋Š”(unreachable) ๊ฐ์ฒด์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํšŒ์ˆ˜ํ•˜๊ณ  ํŒŒํŽธํ™”๋ฅผ ์ค„์ธ๋‹ค [15-18]. ์ตœ์‹  V8์˜ Orinoco ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๋Š” ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์˜ ๋ฉˆ์ถค(Stop-the-world) ํ˜„์ƒ์„ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋ณ‘๋ ฌ(Parallel), ๋™์‹œ(Concurrent), ์ ์ง„์ (Incremental) ๋งˆํ‚น ๋ฐ ์ง€์—ฐ ์Šค์œ„ํ•‘(Lazy sweeping) ๊ธฐ๋ฒ•์„ ๋„์ž…ํ–ˆ๋‹ค [19-24]. - **์ฃผ์š” ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜(Memory Leak) ํŒจํ„ด:** ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ํšŒ์ˆ˜ํ•ด์•ผ ํ•  ๊ฐ์ฒด๊ฐ€ ์ „์—ญ ๊ฐ์ฒด๋‚˜ ํด๋กœ์ € ๋“ฑ์— ์˜ํ•ด ๊ณ„์† ์ฐธ์กฐ๋˜์–ด ๋ฉ”๋ชจ๋ฆฌ์— ๋„๋‹ฌ ๊ฐ€๋Šฅํ•œ ์ƒํƒœ(reachable)๋กœ ๋‚จ์•„์žˆ์„ ๋•Œ ๋ฐœ์ƒํ•œ๋‹ค [2]. ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ์˜ ๋Œ€ํ‘œ์ ์ธ ๋ˆ„์ˆ˜ ํŒจํ„ด์œผ๋กœ๋Š” ๋ฌธ์„œ์—์„œ ์ œ๊ฑฐ๋˜์—ˆ์œผ๋‚˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ณ€์ˆ˜์— ์˜ํ•ด ์ฐธ์กฐ๊ฐ€ ๋‚จ์•„์žˆ๋Š” '๋ถ„๋ฆฌ๋œ DOM ๋…ธ๋“œ(Detached DOM nodes)' [8, 25], ํ•ด์ œ๋˜์ง€ ์•Š์€ ์ฑ„ ๋ˆ„์ ๋œ '์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ(Event listener)' ๋ฐ 'ํƒ€์ด๋จธ/์˜ต์ €๋ฒ„(Timers and observers)' [9, 26-28], ๊ทธ๋ฆฌ๊ณ  ์—ฌ๋Ÿฌ ํด๋กœ์ €๊ฐ€ ์Šค์ฝ”ํ”„๋ฅผ ๊ณต์œ ํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” 'ํด๋กœ์ € ์Šค์ฝ”ํ”„ ์œ ์ง€(Closure scope retention)' ๋“ฑ์ด ์žˆ๋‹ค [9, 29]. - **๋ฉ”๋ชจ๋ฆฌ ํ”„๋กœํŒŒ์ผ๋ง ๋ฐ ์ตœ์ ํ™” ๋„๊ตฌ:** Chrome DevTools์˜ **Heap Snapshot(ํž™ ์Šค๋ƒ…์ƒท)**์„ ์‚ฌ์šฉํ•˜๋ฉด ํŠน์ • ์‹œ์ ์˜ ์ „์ฒด ๊ฐ์ฒด ๊ทธ๋ž˜ํ”„์™€ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ(Shallow/Retained size)๋ฅผ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค [7, 30]. ํŠนํžˆ ์˜์‹ฌ๋˜๋Š” ์ž‘์—…์„ ๋ฐ˜๋ณตํ•˜๋ฉฐ ์„ธ ๋ฒˆ์˜ ์Šค๋ƒ…์ƒท์„ ์ฐ์–ด ๋น„๊ตํ•˜๋Š” ๊ธฐ๋ฒ•(Three-snapshot technique)์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ 'Comparison' ๋ทฐ๋ฅผ ํ™œ์šฉํ•˜๋ฉด ์‚ญ์ œ๋˜์ง€ ์•Š๊ณ  ๋‚จ์€ ๋ˆ„์ˆ˜ ๊ฐ์ฒด๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์žˆ๋‹ค [31, 32]. ๋˜ํ•œ, **Allocation Timeline(ํ• ๋‹น ํƒ€์ž„๋ผ์ธ)** ๋„๊ตฌ๋ฅผ ํ†ตํ•ด ์‹œ๊ฐ„์— ๋”ฐ๋ฅธ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ์ถ”์ ํ•˜์—ฌ, ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜๋˜์ง€ ์•Š๊ณ  ํŒŒ๋ž€์ƒ‰ ๋ง‰๋Œ€๋กœ ๋‚จ์•„์žˆ๋Š” ๊ฐ์ฒด์™€ ํ•ด๋‹น ๊ฐ์ฒด์˜ ์ƒ์„ฑ ์œ„์น˜(Stack trace)๋ฅผ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋‹ค [7, 33-37]. - **๋ฉ”๋ชจ๋ฆฌ ์ตœ์ ํ™” ๊ธฐ๋ฒ•:** ๋ธŒ๋ผ์šฐ์ € ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด V8์€ ์ €์‚ฌ์–‘ ๊ธฐ๊ธฐ์—์„œ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ๋นˆ๋„๋ฅผ ๋†’์—ฌ ํž™ ์—ฌ์œ  ๊ณต๊ฐ„์„ ๋œ ๋‚จ๊ธฐ๋„๋ก ํ•˜๋Š” '๋ฉ”๋ชจ๋ฆฌ ๊ฐ์†Œ ๋ชจ๋“œ(Memory reduction mode)'๋ฅผ ๋„์ž…ํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ํ’‹ํ”„๋ฆฐํŠธ๋ฅผ ๋Œ€ํญ ์ค„์˜€๋‹ค [38, 39]. ๋˜ํ•œ, ๋ฐฑ๊ทธ๋ผ์šด๋“œ ํŒŒ์‹ฑ ์ค‘ ํ• ๋‹น๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์กด(Zone)์˜ ์ˆ˜๋ช…์„ ๋‹จ์ถ•ํ•˜๊ณ  AST ๋…ธ๋“œ์˜ ํ•„๋“œ ํŒจํ‚น์„ ์ˆ˜๋™์œผ๋กœ ๊ฐœ์„ ํ•˜์—ฌ ํŒŒ์„œ์™€ ์ปดํŒŒ์ผ๋Ÿฌ์˜ ์˜คํ”„ํž™(off-heap) ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„๋ฅผ ์ตœ์ ํ™”ํ–ˆ๋‹ค [40, 41]. V8์€ ํฌ์ธํ„ฐ ์••์ถ•(Pointer compression) ๊ธฐ์ˆ ์„ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ํฌ๊ฒŒ ์ค„์ด๊ธฐ๋„ ํ–ˆ์œผ๋‚˜, ์ด๋กœ ์ธํ•ด ์ „์ฒด V8 ํž™์„ 4GB์˜ ์—ฐ์†๋œ ๋ฉ”๋ชจ๋ฆฌ ์ผ€์ด์ง€(Memory Cage) ๋‚ด๋กœ ์ œํ•œํ•˜๋Š” ๊ตฌ์กฐ์  ๋ณ€ํ™”๋ฅผ ๊ฐ€์ ธ์™”๋‹ค [42, 43]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Programming & Language ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** [[แ„€แ…กแ„‡แ…ตแ„Œแ…ต แ„แ…ฅแ†ฏแ„…แ…ฆแ†จแ„‰แ…งแ†ซ (Garbage Collection)|๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ (Garbage Collection)]], [[V8 JavaScript Engine|V8 JavaScript Engine]], [[Chrome DevTools|Chrome DevTools]], [[แ„†แ…ฆแ„†แ…ฉแ„…แ…ต แ„‚แ…ฎแ„‰แ…ฎ(Memory Leak)|๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ (Memory Leak)]] - **Projects/Contexts:** [[Orinoco แ„‘แ…ณแ„…แ…ฉแ„Œแ…ฆแ†จแ„แ…ณ|Orinoco ํ”„๋กœ์ ํŠธ]], Chrome Allocation Timeline, Three-snapshot technique, [[V8 Memory Cage|V8 Memory Cage]] - **Contradictions/Notes:** ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ์‹œ์Šคํ…œ์˜ ์„ฑ๋Šฅ์ด ๊ด€๋ฆฌ๋˜์ง€ ์•Š๋Š”(unmanaged) ์–ธ์–ด(์˜ˆ: C/C++)์— ๋น„ํ•ด ์ ˆ๋Œ€์ ์œผ๋กœ ์šฐ์ˆ˜ํ•˜๊ฑฐ๋‚˜ ๋‚˜์œ ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ๊ด€๋ฆฌ๋˜๋Š” ์–ธ์–ด๋Š” ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์ด ๋‹จ์ˆœ ํฌ์ธํ„ฐ ์ฆ๊ฐ€๋งŒ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ๋งค์šฐ ๋น ๋ฅด์ง€๋งŒ, ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•˜์—ฌ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ์‹คํ–‰๋  ๋•Œ๋Š” ์˜ˆ๊ธฐ์น˜ ์•Š์€ ์„ฑ๋Šฅ ๋น„์šฉ(์ง€์—ฐ ๋ฐ ๋ฉˆ์ถค)์„ ํ•„์—ฐ์ ์œผ๋กœ ์ง€๋ถˆํ•ด์•ผ ํ•œ๋‹ค [44]. ๋˜ํ•œ ํฌ์ธํ„ฐ ์••์ถ•(Pointer compression)์€ V8 ํž™ ํฌ๊ธฐ๋ฅผ ์ตœ๋Œ€ 40%๊นŒ์ง€ ์ค„์ด๊ณ  ์„ฑ๋Šฅ์„ 5~10% ํ–ฅ์ƒ์‹œํ‚ค์ง€๋งŒ, ํž™์˜ ์ตœ๋Œ€ ํฌ๊ธฐ๋ฅผ 4GB๋กœ ์—„๊ฒฉํžˆ ์ œํ•œํ•œ๋‹ค๋Š” ํŠธ๋ ˆ์ด๋“œ์˜คํ”„๊ฐ€ ์กด์žฌํ•œ๋‹ค [42, 45]. --- *Last updated: 2026-04-19* - Raw Source: 00_Raw/2026-04-20/๋ธŒ๋ผ์šฐ์ € ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๋ฐ ์ตœ์ ํ™”.md ---