--- id: P-REINFORCE-AUTO-18523F category: "10_Wiki/๐Ÿ’ก Topics/Graphics & Performance" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - Object Pooling" --- # [[Object Pooling|Object Pooling]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > Object Pooling(์˜ค๋ธŒ์ ํŠธ ํ’€๋ง)์€ ์ด์•Œ, ํŒŒํ‹ฐํด, ์  ์บ๋ฆญํ„ฐ์™€ ๊ฐ™์ด ๋Ÿฐํƒ€์ž„ ์ค‘ ๋นˆ๋ฒˆํ•˜๊ฒŒ ์ƒ์„ฑ๋˜๊ณ  ํŒŒ๊ดด๋˜๋Š” ๊ฐœ์ฒด๋“ค์˜ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค [1]. ๋งค๋ฒˆ ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹นํ•˜๋Š” ๋Œ€์‹ , ์‚ฌ์ „์— ์ƒ์„ฑํ•ด ๋‘” ๊ฐ์ฒด๋“ค์˜ ํ’€(Pool)์„ ๊ตฌ์ถ•ํ•˜์—ฌ ์ด๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค [1]. ์ด๋ฅผ ํ†ตํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰ ์ค‘ ๋ฐœ์ƒํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ์˜ค๋ฒ„ํ—ค๋“œ์™€ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜(Garbage Collection, GC)์œผ๋กœ ์ธํ•œ ํ”„๋ ˆ์ž„ ๋ฉˆ์ถค ํ˜„์ƒ์„ ํšจ๊ณผ์ ์œผ๋กœ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [1, 2]. ๋Œ€๊ทœ๋ชจ 3D ์”ฌ๊ณผ ๋™์ ์ธ ๋ Œ๋”๋ง ํ™˜๊ฒฝ์—์„œ๋Š” ์•ˆ์ •์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ์ œ์–ด์™€ ๋ˆ„์ˆ˜ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด ๊ฐ์ฒด ํ’€๋ง ์ „๋žต์„ ์‚ฌ์ „์— ์ˆ˜๋ฆฝํ•˜๋Š” ๊ฒƒ์ด ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค [3, 4]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) - **๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜(GC) ๋ถ€ํ•˜ ๋ฐ ์˜ค๋ฒ„ํ—ค๋“œ ๋ฐฉ์ง€:** ๊ฐ์ฒด์˜ ์ง€์†์ ์ธ ์ƒ์„ฑ๊ณผ ์†Œ๋ฉธ์€ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๋ฅผ ์žฆ๊ฒŒ ์ž‘๋™์‹œ์ผœ ์‹œ์Šคํ…œ์— ๋ถ€ํ•˜๋ฅผ ์ค๋‹ˆ๋‹ค. ๊ฐ์ฒด ํ’€๋ง์„ ๋„์ž…ํ•˜๋ฉด ๋นˆ๋ฒˆํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๋ฏ€๋กœ, ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ์˜ค๋ฒ„ํ—ค๋“œ์™€ GC์— ์˜ํ•œ ์ผ์‹œ ์ •์ง€(Pauses)๋ฅผ ํ”ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [1]. - **ํ”„๋ฆฌ์›Œ๋ฐ(Pre-warming) ์ „๋žต:** ๋Ÿฐํƒ€์ž„์— ๊ฐ์ฒด๋ฅผ ํ• ๋‹นํ•  ๋•Œ ์ƒ๊ธฐ๋Š” ๊ฐ‘์ž‘์Šค๋Ÿฌ์šด ์„ฑ๋Šฅ ์ €ํ•˜(Allocation spike)๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ๋”ฉ ๋‹จ๊ณ„์—์„œ ํ’€์„ ๋ฏธ๋ฆฌ ์ƒ์„ฑํ•˜๊ณ  ๋ฐ์›Œ๋‘๋Š”(Pre-warm) ๋ฐฉ์‹์ด ๊ฐ•๋ ฅํžˆ ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค [1]. - **๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜(Memory Leak) ๊ด€๋ฆฌ:** Three.js์™€ ๊ฐ™์€ 3D ๊ทธ๋ž˜ํ”ฝ์Šค ํ™˜๊ฒฝ์—์„œ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ํ•ต์‹ฌ ์ง€์นจ ์ค‘ ํ•˜๋‚˜๋Š”, ์ˆ˜๋ช…์ด ์งง๊ณ  ๋นˆ๋ฒˆํžˆ ๋“ฑ์žฅํ•˜๋Š” ๋ฆฌ์†Œ์Šค๋“ค์— ๋Œ€ํ•ด ์ž์› ํ’€๋ง(Resource pooling)์„ ๊ตฌํ˜„ํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ํ†ต์ œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค [3]. - **๋ฉ”์‰ฌ ์žฌํ™œ์šฉ(Recycling Meshes)์„ ํ†ตํ•œ CPU ์ตœ์ ํ™”:** ํ•œ ๋ฒˆ์— ๋„ˆ๋ฌด ๋งŽ์€ ๋ฉ”์‰ฌ๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ๋•Œ, ๋…ผ๋ฆฌ์ ์ธ ๋ฐ์ดํ„ฐ ๋งต์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์ฒด์˜ ์ƒํƒœ๋ฅผ ์ถ”์ ํ•˜๊ณ , ํ™”๋ฉด์— ๋ณด์ด๋Š” ๊ฐ์ฒด๋งŒ์„ '์‚ฌ์ „ ๋นŒ๋“œ๋œ ๋ฉ”์‰ฌ ํ’€(pool of pre-built meshes)'์„ ์ด์šฉํ•ด ๋ Œ๋”๋งํ•จ์œผ๋กœ์จ CPU ๋ถ€๋‹ด์„ ํฌ๊ฒŒ ๋‚ฎ์ถœ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [2]. - **๋Œ€๊ทœ๋ชจ ๋ฉ”๋ชจ๋ฆฌ ๋Œ€์—ญํญ ์ œ์–ด:** ๋™์ ์ธ ํ™˜๊ฒฝ์—์„œ ์ธ์Šคํ„ด์Šค ๋ฒ„ํผ๊ฐ€ ํ•œ๊ณ„๋ฅผ ์ดˆ๊ณผํ•˜์—ฌ ์žฌํ• ๋‹น๋˜๋Š” ์ผ์ด ์žฆ์•„์ง€๋ฉด ์น˜๋ช…์ ์ธ GC ๋ถ€ํ•˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์—„๊ฒฉํ•œ ๋ฉ”๋ชจ๋ฆฌ ์˜ˆ์‚ฐ ์„ค์ •๊ณผ ํ•จ๊ป˜ ๊ฐ์ฒด ํ’€๋ง ์ „๋žต์ด ์‚ฌ์ „์— ์ฒ ์ €ํžˆ ์ˆ˜๋ฆฝ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [4]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Graphics & Performance ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** [[Memory Management|Memory Management]], [[Garbage Collection|Garbage Collection]], [[Memory Leaks|Memory Leaks]] - **Projects/Contexts:** [[Three.js|Three.js]], [[Babylon.js|Babylon.js]] - **Contradictions/Notes:** ์†Œ์Šค์— ๊ด€๋ จ ์ •๋ณด๊ฐ€ ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค. (์ฃผ์–ด์ง„ ์†Œ์Šค ๋‚ด์—์„œ ์˜ค๋ธŒ์ ํŠธ ํ’€๋ง์˜ ํšจ๊ณผ๋‚˜ ๋ฐฉ์‹์— ๋Œ€ํ•ด ์ƒ์ถฉํ•˜๋Š” ์˜๊ฒฌ์€ ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉฐ, ๋ชจ๋‘ ์„ฑ๋Šฅ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด ์ ๊ทน์ ์œผ๋กœ ๊ถŒ์žฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.) --- *Last updated: 2026-04-19* - Raw Source: 00_Raw/2026-04-20/Object Pooling.md ---