--- id: P-REINFORCE-AUTO-590D6E category: "10_Wiki/๐Ÿ’ก Topics/Programming & Language" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - ๋ธŒ๋ผ์šฐ์ € DOM ๋ˆ„์ˆ˜ ํƒ์ง€ ๋ฐ ๋ Œ๋”๋ง ์ตœ์ ํ™”" --- # [[แ„‡แ…ณแ„…แ…กแ„‹แ…ฎแ„Œแ…ฅ DOM แ„‚แ…ฎแ„‰แ…ฎ แ„แ…กแ†ทแ„Œแ…ต แ„†แ…ตแ†พ แ„…แ…ฆแ†ซแ„ƒแ…ฅแ„…แ…ตแ†ผ แ„Žแ…ฌแ„Œแ…ฅแ†จแ„’แ…ช|๋ธŒ๋ผ์šฐ์ € DOM ๋ˆ„์ˆ˜ ํƒ์ง€ ๋ฐ ๋ Œ๋”๋ง ์ตœ์ ํ™”]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > ์ง€์‹ ์š”์•ฝ ์ •๋ณด ์ถ”์ถœ ์ค‘... ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) **DOM ๋ˆ„์ˆ˜์˜ ์›๋ฆฌ ๋ฐ ์ฃผ์š” ๋ฐœ์ƒ ํŒจํ„ด** * ๋ธŒ๋ผ์šฐ์ € ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋Š” ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ '์‚ฌ๋ผ์ง€๋Š”' ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, GC ๋ฃจํŠธ(window, ํ™œ์„ฑ ํด๋กœ์ €, ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ ๋“ฑ)์—์„œ ๊ณ„์† ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ์ƒํƒœ๋กœ ๋‚จ์•„์žˆ์–ด ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ํšŒ์ˆ˜ํ•˜์ง€ ๋ชปํ•  ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค [1]. * ๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์ธ ํŒจํ„ด์€ '๋ถ„๋ฆฌ๋œ DOM ๋…ธ๋“œ(Detached DOM nodes)'์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๋ฌธ์„œ(Document)์—์„œ๋Š” ์ œ๊ฑฐ๋˜์—ˆ์œผ๋‚˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ณ€์ˆ˜๋‚˜ Map/Set ์—”ํŠธ๋ฆฌ์— ์˜ํ•ด ์ฐธ์กฐ๊ฐ€ ์œ ์ง€๋˜์–ด, ํ•ด๋‹น ์š”์†Œ์™€ ๊ทธ ํ•˜์œ„ ํŠธ๋ฆฌ ์ „์ฒด๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ๋‚จ์•„์žˆ๋Š” ํ˜„์ƒ์ž…๋‹ˆ๋‹ค [2, 7]. * ์ด ์™ธ์—๋„ ํ•ด์ œ๋˜์ง€ ์•Š์€ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ, ์—ฌ๋Ÿฌ ํด๋กœ์ €๊ฐ€ ๋™์ผํ•œ ์Šค์ฝ”ํ”„๋ฅผ ๊ณต์œ ํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ํด๋กœ์ € ์Šค์ฝ”ํ”„ ๋ณด์กด(Closure scope retention), ๊ทธ๋ฆฌ๊ณ  ์ œ๊ฑฐ๋œ ํƒ€๊ฒŸ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ์žŠํ˜€์ง„ ํƒ€์ด๋จธ(setInterval)์™€ ์˜ต์ €๋ฒ„(MutationObserver ๋“ฑ)๊ฐ€ ์ฃผ์š” ๋ˆ„์ˆ˜ ์›์ธ์ž…๋‹ˆ๋‹ค [8, 9]. * ๋‹จ์ผ ํŽ˜์ด์ง€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(SPA)์˜ ๋ผ์šฐํŠธ ์ „ํ™˜ ์‹œ ์ด์ „ ๋ผ์šฐํŠธ์˜ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ฆฌ์Šค๋„ˆ๋‚˜ ์ „์—ญ ์ƒํƒœ ์ฐธ์กฐ๋ฅผ ์ œ๋Œ€๋กœ ์ •๋ฆฌํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ํฐ ๋ˆ„์ˆ˜ ๋ฐœ์ƒ ์ถœ์ฒ˜์ž…๋‹ˆ๋‹ค [10]. **๋ธŒ๋ผ์šฐ์ € DOM ๋ˆ„์ˆ˜ ํƒ์ง€ ๊ธฐ๋ฒ•** * **3๋‹จ๊ณ„ ์Šค๋ƒ…์ƒท ๊ธฐ๋ฒ• (Three-snapshot technique):** ๋ˆ„์ˆ˜๋ฅผ ํƒ์ง€ํ•˜๋Š” ๊ฐ€์žฅ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋ฒ ์ด์Šค๋ผ์ธ ์Šค๋ƒ…์ƒท์„ ์ฐ๊ณ , ๋ˆ„์ˆ˜๊ฐ€ ์˜์‹ฌ๋˜๋Š” ์•ก์…˜์„ ์ˆ˜ํ–‰ํ•œ ๋’ค ๋‘ ๋ฒˆ์งธ ์Šค๋ƒ…์ƒท์„ ์ฐ์œผ๋ฉฐ, ๋™์ผํ•œ ์•ก์…˜์„ ๋ฐ˜๋ณตํ•œ ๋’ค ์„ธ ๋ฒˆ์งธ ์Šค๋ƒ…์ƒท์„ ์ฐ์–ด ๋‘ ๋ฒˆ์งธ์™€ ์„ธ ๋ฒˆ์งธ ์Šค๋ƒ…์ƒท์„ ๋น„๊ตํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค [11]. * **Chrome DevTools์˜ ํž™ ์Šค๋ƒ…์ƒท (Heap snapshot):** ํŠน์ • ์‹œ์ ์˜ ์ „์ฒด ๊ฐ์ฒด ๊ทธ๋ž˜ํ”„๋ฅผ ์บก์ฒ˜ํ•ฉ๋‹ˆ๋‹ค. 'Comparison(๋น„๊ต)' ๋ทฐ๋ฅผ ํ†ตํ•ด ์Šค๋ƒ…์ƒท ๊ฐ„์˜ ์ฐจ์ด๋ฅผ ํ™•์ธํ•˜๊ฑฐ๋‚˜, 'Retained Size' ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•˜์—ฌ ๊ฐ€์žฅ ํฐ ๋ˆ„์ˆ˜ ๊ฐ์ฒด๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [3, 12, 13]. ํ•„ํ„ฐ ๊ธฐ๋Šฅ ์ค‘ "Objects retained by detached nodes(๋ถ„๋ฆฌ๋œ ๋…ธ๋“œ์— ์˜ํ•ด ๋ณด์กด๋œ ๊ฐ์ฒด)"๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด DOM ๋ˆ„์ˆ˜๋ฅผ ์‰ฝ๊ฒŒ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [14]. * **ํ• ๋‹น ํƒ€์ž„๋ผ์ธ (Allocation instrumentation on timeline):** ์ผ์ • ๊ธฐ๊ฐ„ ๋™์•ˆ์˜ ๋ชจ๋“  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น๊ณผ ์Šคํƒ ํŠธ๋ ˆ์ด์Šค๋ฅผ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค [3, 15]. ํŒŒ๋ž€์ƒ‰ ๋ง‰๋Œ€๋Š” ํƒ€์ž„๋ผ์ธ์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ์—ฌ์ „ํžˆ ์‚ด์•„์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ์ด๋ฅผ ๋ถ„์„ํ•˜์—ฌ ์˜ˆ์ƒ ์ˆ˜๋ช…์„ ์ดˆ๊ณผํ•˜์—ฌ ๋‚จ๊ฒจ์ง„ ๊ฐ์ฒด์™€ ํ•ด๋‹น ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋œ ์ •ํ™•ํ•œ ์ฝ”๋“œ ์œ„์น˜๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [3, 16, 17]. * ๋ˆ„์ˆ˜ ์กฐ์‚ฌ ์‹œ์—๋Š” `console.log`๊ฐ€ ๊ฐ์ฒด ์ฐธ์กฐ๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ๊ณผ, ๋ฏธ๋‹ˆํŒŒ์ด(Minify)๋œ ์ฝ”๋“œ๋Š” ๋ถ„์„์ด ์–ด๋ ค์šฐ๋ฏ€๋กœ ์†Œ์Šค ๋งต(Source maps)์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ฃผ์˜์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค [10]. **๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜(GC)๊ณผ ๋ Œ๋”๋ง ์„ฑ๋Šฅ์˜ ์ƒ๊ด€๊ด€๊ณ„** * ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํšŒ์ˆ˜ํ•  ๋•Œ๋Š” ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์˜ ์‹คํ–‰์„ ์ผ์‹œ์ ์œผ๋กœ ๋ฉˆ์ถ”๋Š” 'Stop-the-world' ํ˜„์ƒ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [6, 18]. ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•ด์ง€๊ฑฐ๋‚˜ ๋ˆ„์ˆ˜๊ฐ€ ๋ˆ„์ ๋˜๋ฉด GC๊ฐ€ ์ž์ฃผ, ๊ธธ๊ฒŒ ์‹คํ–‰๋˜๋Š”๋ฐ, ์ด๋Š” ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ์‹œ์Šคํ…œ์ด๋‚˜ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์‹คํ–‰ ์‹œ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ถˆ์พŒํ•œ ๋Š๊น€ ํ˜„์ƒ(Jank)๊ณผ ๋ Œ๋”๋ง ์ง€์—ฐ์„ ์œ ๋ฐœํ•ฉ๋‹ˆ๋‹ค [5, 6]. * V8 ์—”์ง„์€ ์ด๋Ÿฌํ•œ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์˜ ๋ Œ๋”๋ง ๋ฐ ์‹คํ–‰ ์ง€์—ฐ์„ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด 'Orinoco' ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๋ฅผ ๋„์ž…ํ•˜์˜€์Šต๋‹ˆ๋‹ค [19]. ์ด๋Š” ๋ณ‘๋ ฌ(Parallel), ์ ์ง„์ (Incremental), ๋™์‹œ(Concurrent) ๊ธฐ๋ฒ•์„ ํ™œ์šฉํ•˜์—ฌ ๋Œ€๋ถ€๋ถ„์˜ GC ์ž‘์—…์„ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์Šค๋ ˆ๋“œ์—์„œ ์ฒ˜๋ฆฌํ•จ์œผ๋กœ์จ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ๊ฐ€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ํ™”๋ฉด์„ ์›ํ™œํžˆ ๋ Œ๋”๋งํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•์Šต๋‹ˆ๋‹ค [20-23]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Programming & Language ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** [[Garbage Collection (GC)|Garbage Collection (GC)]], [[Chrome DevTools|Chrome DevTools]], Detached DOM nodes, [[Heap Snapshot|Heap Snapshot]], [[Orinoco GC|Orinoco GC]] - **Projects/Contexts:** [[V8 JavaScript Engine|V8 JavaScript Engine]], [[Single Page Applications (SPA)|Single Page Applications (SPA)]] - **Contradictions/Notes:** ์†Œ์Šค์—๋Š” ๋ธŒ๋ผ์šฐ์ € ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ํƒ์ง€ ๋ฐฉ๋ฒ•๊ณผ V8 ์—”์ง„์˜ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ ๋™์ž‘ ์›๋ฆฌ์— ๋Œ€ํ•œ ์ •๋ณด๋Š” ๋งค์šฐ ์ƒ์„ธํ•˜๊ฒŒ ์„ค๋ช…๋˜์–ด ์žˆ์œผ๋‚˜, ๋ ˆ์ด์•„์›ƒ ์—ฐ์‚ฐ, ํŽ˜์ธํŒ… ๊ทœ์น™, CSS ์ตœ์ ํ™” ๋“ฑ ๋ธŒ๋ผ์šฐ์ €์˜ ์ˆœ์ˆ˜ '๋ Œ๋”๋ง ํŒŒ์ดํ”„๋ผ์ธ ์ตœ์ ํ™”'์™€ ๊ด€๋ จ๋œ ์ง์ ‘์ ์ธ ์†Œ์Šค์— ๊ด€๋ จ ์ •๋ณด๊ฐ€ ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ Œ๋”๋ง ์ตœ์ ํ™”๋Š” ์ฃผ๋กœ '๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ๋ฐฉ์ง€๋ฅผ ํ†ตํ•œ GC Pause(Jank) ์ตœ์†Œํ™”'์˜ ๊ด€์ ์—์„œ๋งŒ ๋‹ค๋ฃจ์–ด์กŒ์Šต๋‹ˆ๋‹ค. --- *Last updated: 2026-04-19* - Raw Source: 00_Raw/2026-04-20/๋ธŒ๋ผ์šฐ์ € DOM ๋ˆ„์ˆ˜ ํƒ์ง€ ๋ฐ ๋ Œ๋”๋ง ์ตœ์ ํ™”.md ---