--- id: P-REINFORCE-AUTO-B1B522 category: "10_Wiki/๐Ÿ’ก Topics/AI" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - Chrome DevTools Memory Profiling" --- # [[Chrome DevTools Memory Profiling|Chrome DevTools Memory Profiling]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > Chrome DevTools Memory Profiling์€ JavaScript ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  ๋ถ„์„ํ•˜๊ธฐ ์œ„ํ•œ ๋ถ„์„ ๋„๊ตฌ ๋ชจ์Œ์ž…๋‹ˆ๋‹ค [1, 2]. ์ฃผ๋กœ DevTools์˜ Memory ํŒจ๋„์„ ํ†ตํ•ด ์ œ๊ณต๋˜๋ฉฐ, ๊ฐ์ฒด์˜ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ์‹œ์ , ์œ ์ง€(Retaining) ๊ฒฝ๋กœ, ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ์—ฌ๋ถ€๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ์ถ”์ ํ•˜์—ฌ ์ •์ƒ์ ์œผ๋กœ ์ •๋ฆฌ๋˜์ง€ ์•Š์€ ๊ฐ์ฒด๋ฅผ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค [3-6]. ์ด๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋Š” ๋ฉ”๋ชจ๋ฆฌ ํž™(Heap) ์ƒํƒœ๋ฅผ ์ •๋ฐ€ํ•˜๊ฒŒ ๋ถ„์„ํ•˜๊ณ  ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ ํ˜„์ƒ์ด๋‚˜ ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ์œ ๋ฐœํ•˜๋Š” ์ฝ”๋“œ์˜ ๊ทผ๋ณธ ์›์ธ์„ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [7-9]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) * **ํ•ต์‹ฌ ํ”„๋กœํŒŒ์ผ๋ง ๋„๊ตฌ (Memory Panel Tools):** * **Heap Snapshot (ํž™ ์Šค๋ƒ…์ƒท):** ํŠน์ • ์‹œ์ ์˜ ์ „์ฒด ๋ฉ”๋ชจ๋ฆฌ ๊ฐ์ฒด ๊ทธ๋ž˜ํ”„๋ฅผ ์บก์ฒ˜ํ•˜๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค [3, 10]. ์˜์‹ฌ๋˜๋Š” ์ž‘์—… ์ „, ์ž‘์—… ์ค‘, ์ž‘์—… ํ›„์˜ ์„ธ ๋ฒˆ์˜ ์Šค๋ƒ…์ƒท์„ ์ฐ์–ด ๋น„๊ตํ•˜๋Š” '3-์Šค๋ƒ…์ƒท ๊ธฐ๋ฒ•(three-snapshot technique)'์„ ํ†ตํ•ด ์ผํšŒ์„ฑ ํ• ๋‹น์„ ํ•„ํ„ฐ๋งํ•˜๊ณ  ์‹ค์ œ ๋ˆ„์ˆ˜ ํ›„๋ณด๋ฅผ ์•ˆ์ •์ ์œผ๋กœ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [7, 11]. ์ œ๊ณต๋˜๋Š” ๋ทฐ(View)์—๋Š” ์ƒ์„ฑ์ž๋ณ„๋กœ ๊ฐ์ฒด๋ฅผ ๋ฌถ์–ด ํฌ๊ธฐ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” Summary, ๋‘ ์Šค๋ƒ…์ƒท ๊ฐ„์˜ ์ฐจ์ด๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” Comparison, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์กฐ๋ฅผ ์กฐ๊ฐ๋„๋กœ ๋ณด์—ฌ์ฃผ๋Š” Containment, ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์˜ ํŒŒ์ด ์ฐจํŠธ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” Statistics ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค [9]. * **Allocation instrumentation on timeline (ํƒ€์ž„๋ผ์ธ์˜ ํ• ๋‹น ๊ณ„์ธก):** ์ผ์ • ๊ธฐ๊ฐ„ ๋™์•ˆ์˜ ๋ชจ๋“  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ์Šคํƒ ํŠธ๋ ˆ์ด์Šค์™€ ํ•จ๊ป˜ ๊ธฐ๋กํ•˜๋ฉฐ, ์ตœ์†Œ 50ms ๊ฐ„๊ฒฉ์œผ๋กœ ์Šค๋ƒ…์ƒท์„ ์ฃผ๊ธฐ์ ์œผ๋กœ ์บก์ฒ˜ํ•ฉ๋‹ˆ๋‹ค [3, 12, 13]. ํƒ€์ž„๋ผ์ธ์—์„œ ํŒŒ๋ž€์ƒ‰ ๋ง‰๋Œ€๋Š” ๊ธฐ๋ก ์ข…๋ฃŒ ์‹œ์ ๊นŒ์ง€ ์—ฌ์ „ํžˆ ์‚ด์•„์žˆ๋Š” ๊ฐ์ฒด(๋ˆ„์ˆ˜ ํ›„๋ณด)๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ, ํšŒ์ƒ‰ ๋ง‰๋Œ€๋Š” ํ• ๋‹น ํ›„ ์ด๋ฏธ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜๋œ ๊ฐ์ฒด๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค [3, 4, 14, 15]. * **Allocation sampling (ํ• ๋‹น ์ƒ˜ํ”Œ๋ง):** ์ „์ฒด ํ• ๋‹น ์ถ”์ ๋ณด๋‹ค ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ ์€ ํ†ต๊ณ„์  ์ƒ˜ํ”Œ๋ง ๋ฐฉ๋ฒ•์œผ๋กœ, ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์˜ ํ”„๋กœํŒŒ์ผ๋ง์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค [16]. * **์ฃผ์š” ์ง€ํ‘œ ๋ฐ ๋ถ„์„ ๊ฐœ๋…:** * **Shallow Size vs. Retained Size:** 'Shallow size'๋Š” ๊ฐ์ฒด ์ž์ฒด๊ฐ€ ๋…๋ฆฝ์ ์œผ๋กœ ์ฐจ์ง€ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ(์ผ๋ฐ˜์ ์œผ๋กœ ๋ฌธ์ž์—ด์ด๋‚˜ ๋ฐฐ์—ด์ด ํผ)์ด๋ฉฐ, 'Retained size'๋Š” ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ์‚ญ์ œํ•˜์—ฌ ์ฐธ์กฐ๊ฐ€ ๋Š์–ด์กŒ์„ ๋•Œ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๋ฅผ ํ†ตํ•ด ํ™•๋ณดํ•  ์ˆ˜ ์žˆ๋Š” ์ด ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค [17]. * **Retainers (์œ ์ง€ ๊ฒฝ๋กœ):** ํŠน์ • ๊ฐ์ฒด๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์‚ด์•„์žˆ๊ฒŒ ๋งŒ๋“ค์–ด ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์„ ๋ฐฉํ•ดํ•˜๋Š” ์ฐธ์กฐ ์ฒด์ธ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค [3, 6]. ๊ฐœ๋ฐœ์ž๋Š” ์ด ํŠธ๋ฆฌ๋ฅผ ํ™•์ธํ•˜์—ฌ ์–ด๋–ค ์ฐธ์กฐ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ์œ ๋ฐœํ•˜๋Š”์ง€ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [8, 18]. * **๊ฐ์ฒด ID (Object ID):** ๊ฐ์ฒด ์ด๋ฆ„ ๋’ค์— ๋ถ™๋Š” `@` ๊ธฐํ˜ธ์™€ ์ˆซ์ž๋Š” ๊ณ ์œ  ID๋กœ, ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ๊ณผ์ •์—์„œ ๊ฐ์ฒด๊ฐ€ ์ด๋™ํ•˜๋”๋ผ๋„ ๋ณ€ํ•˜์ง€ ์•Š์•„ ์—ฌ๋Ÿฌ ์Šค๋ƒ…์ƒท์— ๊ฑธ์ณ ํŠน์ • ๊ฐ์ฒด์˜ ์ƒํƒœ๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ์ถ”์  ๋ฐ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค [12, 19, 20]. * **ํ”„๋กœํŒŒ์ผ๋ง์„ ํ†ตํ•ด ์‹๋ณ„๋˜๋Š” ์ฃผ์š” ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ํŒจํ„ด:** * ๋ฌธ์„œ(DOM)์—์„œ๋Š” ์ œ๊ฑฐ๋˜์—ˆ์œผ๋‚˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ณ€์ˆ˜, Map/Set, ๋˜๋Š” ํด๋กœ์ € ๋“ฑ์— ์˜ํ•ด ์—ฌ์ „ํžˆ ์ฐธ์กฐ๋˜๊ณ  ์žˆ๋Š” ๋ถ„๋ฆฌ๋œ DOM ๋…ธ๋“œ(Detached DOM nodes) [16, 21, 22]. * ์ƒ๋ช… ์ฃผ๊ธฐ์— ๋งž๊ฒŒ ์ œ๊ฑฐ๋˜์ง€ ์•Š๊ณ  ๋ฐ˜๋ณต์ ์œผ๋กœ ์Œ“์ด๋Š” ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ(Event listener accumulation) ๋ฐ ์žŠํ˜€์ง„ ํƒ€์ด๋จธ๋‚˜ ์˜ต์ €๋ฒ„(Forgotten timers and observers) [23, 24]. * ์—ฌ๋Ÿฌ ํด๋กœ์ €๊ฐ€ ์Šค์ฝ”ํ”„๋ฅผ ๊ณต์œ ํ•  ๋•Œ, ํฐ ๋ฐ์ดํ„ฐ๋ฅผ ์บก์ฒ˜ํ•œ ๋ณ€์ˆ˜๋ฅผ ๋‹ค๋ฅธ ํด๋กœ์ €์˜ ์ˆ˜๋ช… ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ•ด์ œํ•˜์ง€ ๋ชปํ•˜๋Š” ํด๋กœ์ € ์Šค์ฝ”ํ”„ ๋ณด์กด(Closure scope retention) [23]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** AI ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** [[Heap Snapshot|Heap Snapshot]], [[Allocation Timeline|Allocation Timeline]], [[Garbage Collection|Garbage Collection]], [[Retaining Path|Retaining Path]], Shallow Size and Retained Size - **Projects/Contexts:** V8 Engine Memory Management, [[แ„‡แ…ณแ„…แ…กแ„‹แ…ฎแ„Œแ…ฅ แ„†แ…ฆแ„†แ…ฉแ„…แ…ต แ„‚แ…ฎแ„‰แ…ฎ แ„แ…กแ†ทแ„Œแ…ต(Browser Memory Leak Detection)|Browser Memory Leak Detection]] - **Contradictions/Notes:** ์†Œ์Šค ๊ฐ„์˜ ์ง์ ‘์ ์ธ ๋ชจ์ˆœ์€ ์—†์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ, ์‹ค๋ฌด์  ์ฃผ์˜์‚ฌํ•ญ์œผ๋กœ `console.log`๊ฐ€ ํ‰๊ฐ€๋œ ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ๊ณ„์† ์œ ์ง€ํ•˜์—ฌ ๊ฐ€์งœ ์–‘์„ฑ(false positive)์˜ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ์กฐ์‚ฌ ์ค‘์—๋Š” ์ฝ˜์†”์„ ์ง€์šฐ๊ฑฐ๋‚˜ ํฐ ๊ฐ์ฒด ๊ธฐ๋ก์„ ํ”ผํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๊ฒฝ๊ณ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค [21, 25]. ๋˜ํ•œ ์ฝ”๋“œ์˜ ๋‚œ๋…ํ™”(Minified code) ๋•Œ๋ฌธ์— Retainer ์ฒด์ธ์„ ์ฝ๊ธฐ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์˜๋ฏธ ์žˆ๋Š” ํ•จ์ˆ˜/๋ณ€์ˆ˜ ๋ช…์„ ๋ณด๋ ค๋ฉด ์†Œ์Šค ๋งต(Source maps)์„ ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [25]. --- *Last updated: 2026-04-19* - Raw Source: 00_Raw/2026-04-20/Chrome DevTools Memory Profiling.md ---