--- id: P-REINFORCE-AUTO-1F94B3 category: "10_Wiki/๐Ÿ’ก Topics/Programming & Language" 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) > ์˜ค๋ธŒ์ ํŠธ ํ’€๋ง์€ ๊ฐ์ฒด์˜ ๋นˆ๋ฒˆํ•œ ์ƒ์„ฑ๊ณผ ํŒŒ๊ดด๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ๋น„์šฉ๊ณผ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜(GC) ์ŠคํŒŒ์ดํฌ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด, ๋ฏธ๋ฆฌ ๊ณ ์ •๋œ ๊ฐœ์ˆ˜์˜ ๊ฐ์ฒด ํ’€(Pool)์„ ํ• ๋‹นํ•ด ๋‘๊ณ  ํ•„์š”ํ•  ๋•Œ ๊บผ๋‚ด์–ด ์žฌ์‚ฌ์šฉํ•œ ๋’ค ๋‹ค์‹œ ๋ฐ˜ํ™˜ํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์„ฑ๋Šฅ ์ตœ์ ํ™” ๋””์ž์ธ ํŒจํ„ด์ž…๋‹ˆ๋‹ค. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) **1. ๋„์ž… ๋ชฉ์ ๊ณผ ๋ฉ”๋ชจ๋ฆฌ ํŒŒํŽธํ™” ๋ฐฉ์ง€** ์‹ค์‹œ๊ฐ„ ์ƒํ˜ธ์ž‘์šฉ์ด ์ค‘์š”ํ•œ ๊ฒŒ์ž„(์˜ˆ: ์ŠˆํŒ… ๊ฒŒ์ž„์˜ ํƒ„ํ™˜, ํŒŒํ‹ฐํด ์‹œ์Šคํ…œ)์—์„œ ๋งค ํ”„๋ ˆ์ž„๋งˆ๋‹ค ์ˆ˜๋ฐฑ ๊ฐœ์˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์‚ญ์ œํ•˜๋ฉด ์‹œ์Šคํ…œ ์ž์›์„ ์†Œ๋ชจํ•˜์—ฌ ํ™”๋ฉด์ด ๋Š๊ธฐ๋Š” ์ง€์—ฐ(Lag) ํ˜„์ƒ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ •๋ฆฌํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ, ์žฆ์€ ํ• ๋‹น๊ณผ ํ•ด์ œ๋Š” ํž™ ๋ฉ”๋ชจ๋ฆฌ์˜ ๊ฐ€์šฉ ๊ณต๊ฐ„์„ ์ž‘์€ ์กฐ๊ฐ์œผ๋กœ ๋‚˜๋ˆ„์–ด๋ฒ„๋ฆฌ๋Š” '๋ฉ”๋ชจ๋ฆฌ ํŒŒํŽธํ™”(Memory Fragmentation)'๋ฅผ ์œ ๋ฐœํ•˜์—ฌ ๊ฒฐ๊ตญ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ์‹คํŒจ์™€ ํฌ๋ž˜์‹œ๋ฅผ ์ดˆ๋ž˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋ธŒ์ ํŠธ ํ’€์€ ๋กœ๋”ฉ ์‹œ์  ๋“ฑ ์ดˆ๊ธฐ์— ํฐ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•œ ๋ฒˆ์— ํ• ๋‹นํ•˜๊ณ  ์ด๋ฅผ ์œ ์ง€ํ•จ์œผ๋กœ์จ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ์›์ฒœ ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค. **2. ์ž‘๋™ ์›๋ฆฌ** ์˜ค๋ธŒ์ ํŠธ ํ’€์€ ์นด๋“œ์˜ ๋‚ด์šฉ์„ ์ง€์šฐ๊ณ  ๋‹ค์‹œ ๋ฑ์— ๋„ฃ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. - **์‚ฌ์ „ ํ• ๋‹น (Pre-warming):** ์ดˆ๊ธฐ ํฌ๊ธฐ๋งŒํผ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋น„ํ™œ์„ฑ ์ƒํƒœ๋กœ ๋ณด๊ด€ํ•ฉ๋‹ˆ๋‹ค. - **ํ™œ์„ฑํ™” ๋ฐ ์žฌ์‚ฌ์šฉ:** ๊ฐ์ฒด๊ฐ€ ํ•„์š”ํ•  ๋•Œ ํ’€์—์„œ ๊ฐ€์šฉํ•œ ๊ฐ์ฒด๋ฅผ ๊ฐ€์ ธ์™€ ์ƒํƒœ๋ฅผ ์ดˆ๊ธฐํ™”ํ•œ ๋’ค ํ™œ์„ฑํ™”(In-use)ํ•ฉ๋‹ˆ๋‹ค. - **๋ฐ˜ํ™˜:** ์‚ฌ์šฉ์ด ๋๋‚œ ๊ฐ์ฒด๋Š” ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์‚ญ์ œํ•˜๋Š” ๋Œ€์‹  ๋น„ํ™œ์„ฑ ์ƒํƒœ๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ ํ’€์— ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. **3. ํ•œ๊ณ„์  ๋ฐ ๋ถ€์ž‘์šฉ ๊ด€๋ฆฌ** - **๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„์™€ ํฌ๊ธฐ ๊ณ ์ •:** ํ’€์˜ ํฌ๊ธฐ๊ฐ€ ๋„ˆ๋ฌด ํฌ๋ฉด ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๊ฐ์ฒด๋“ค์ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณ„์† ์ ์œ ํ•˜์—ฌ ์ž์›์„ ๋‚ญ๋น„ํ•˜๊ฒŒ ๋˜๋ฉฐ, ๋ฐ˜๋Œ€๋กœ ๋„ˆ๋ฌด ์ž‘์œผ๋ฉด ํ•„์š”ํ•œ ์ˆœ๊ฐ„์— ๊ฐ์ฒด๋ฅผ ๊ฐ€์ ธ์˜ค์ง€ ๋ชปํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - **๊ฐ์ฒด ํฌ๊ธฐ ๊ณ ์ •:** ์„œ๋กœ ๋‹ค๋ฅธ ํƒ€์ž…์ด๋‚˜ ํฌ๊ธฐ์˜ ๊ฐ์ฒด๋ฅผ ํ•˜๋‚˜์˜ ํ’€์—์„œ ๊ด€๋ฆฌํ•  ๊ฒฝ์šฐ, ๊ฐ€์žฅ ํฐ ๊ฐ์ฒด์˜ ํฌ๊ธฐ์— ๋งž์ถฐ ์Šฌ๋กฏ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. - **๋ถˆ์™„์ „ํ•œ ์ดˆ๊ธฐํ™” ์œ„ํ—˜:** ์žฌ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ฒด๋Š” ์ด์ „ ์ƒ์• (Past life)์˜ ๋ฐ์ดํ„ฐ ํ”์ ์ด ๋‚จ์•„์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์ฒด๋ฅผ ํ’€์—์„œ ๊บผ๋‚ผ ๋•Œ ์ƒˆ๋กœ์šด ์ƒํƒœ๋กœ ์™„๋ฒฝํ•˜๊ฒŒ ๋ฎ์–ด์“ฐ๊ธฐ(์ดˆ๊ธฐํ™”)ํ•˜์ง€ ์•Š์œผ๋ฉด ์‹ฌ๊ฐํ•œ ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - **์ฐธ์กฐ ์œ ์ง€ ๋ฒ„๊ทธ:** ํ’€์— ๋ฐ˜ํ™˜๋œ ๊ฐ์ฒด๋ฅผ ๋‹ค๋ฅธ ํด๋ž˜์Šค์—์„œ ์—ฌ์ „ํžˆ ์ฐธ์กฐํ•˜๊ณ  ์กฐ์ž‘ํ•  ๊ฒฝ์šฐ, ์—‰๋šฑํ•œ ๊ณณ์—์„œ ๊ฐ์ฒด๊ฐ€ ๋ณ€๊ฒฝ๋˜๋Š” ์ถ”์ ํ•˜๊ธฐ ํž˜๋“  ๋ฒ„๊ทธ(Use-after-free)๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. **4. ๊ณ ์†ํ™”๋ฅผ ์œ„ํ•œ Free List (ํ”„๋ฆฌ ๋ฆฌ์ŠคํŠธ) ๊ธฐ๋ฒ•** ๊ฐ€์žฅ ๋‹จ์ˆœํ•œ ์˜ค๋ธŒ์ ํŠธ ํ’€์€ ๊ฐ€์šฉํ•œ ๊ฐ์ฒด๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ํ’€ ์ „์ฒด๋ฅผ ์ˆœํšŒํ•˜๋ฏ€๋กœ $O(n)$์˜ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. ์ด๋ฅผ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋น„ํ™œ์„ฑ ์ƒํƒœ์ธ ๊ฐ์ฒด๋“ค์˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„(์˜ˆ: C++์˜ `union`)์„ ํ™œ์šฉํ•˜์—ฌ ๋‹ค์Œ ๋นˆ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” **ํ”„๋ฆฌ ๋ฆฌ์ŠคํŠธ(Free List)**๋ฅผ ๊ตฌ์ถ•ํ•˜๋ฉด, ์ถ”๊ฐ€์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„ ์—†์ด $O(1)$์˜ ์†๋„๋กœ ์ฆ‰์‹œ ๊ฐ์ฒด๋ฅผ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Programming & Language ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** [[Garbage Collection (GC) แ„Žแ…ฌแ„Œแ…ฅแ†จแ„’แ…ช|Garbage Collection (GC) ์ตœ์ ํ™”]], Generational GC (์„ธ๋Œ€๋ณ„ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜), Memory Fragmentation (๋ฉ”๋ชจ๋ฆฌ ํŒŒํŽธํ™”), [[InstancedMesh (แ„ƒแ…ณแ„…แ…ฉแ„‹แ…ฎ แ„แ…ฉแ†ฏ แ„Žแ…ฌแ„Œแ…ฅแ†จแ„’แ…ช)|InstancedMesh (๋“œ๋กœ์šฐ ์ฝœ ์ตœ์ ํ™”)]] - **Projects/Contexts:** [[แ„ƒแ…ขแ„€แ…ฒแ„†แ…ฉ แ„‘แ…กแ„แ…ตแ„แ…ณแ†ฏ แ„‰แ…ตแ„‰แ…ณแ„แ…ฆแ†ท แ„Žแ…ฌแ„Œแ…ฅแ†จแ„’แ…ช|๋Œ€๊ทœ๋ชจ ํŒŒํ‹ฐํด ์‹œ์Šคํ…œ ์ตœ์ ํ™”]], ์ŠˆํŒ… ๊ฒŒ์ž„์˜ ๋Œ€๊ทœ๋ชจ ํƒ„ํ™˜(Bullet) ์ œ์–ด ์‹œ์Šคํ…œ, React Three Fiber ์—”์ง„ ์•„ํ‚คํ…์ฒ˜ - **Contradictions/Notes:** ์˜ค๋ธŒ์ ํŠธ ํ’€๋ง์ด ๋ชจ๋“  ์ƒํ™ฉ์—์„œ ์ •๋‹ต์€ ์•„๋‹™๋‹ˆ๋‹ค. V8๊ณผ ๊ฐ™์€ ์ตœ์‹  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์˜ ์„ธ๋Œ€๋ณ„ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ(Generational GC)๋Š” ๋‹จ๊ธฐ ์ƒ์กด ๊ฐ์ฒด(Short-lived objects)๋ฅผ ์ˆ˜๊ฑฐํ•˜๋Š” ๋น„์šฉ์ด ์‚ฌ์‹ค์ƒ 0์— ๊ฐ€๊น์Šต๋‹ˆ๋‹ค. ์ด ํ™˜๊ฒฝ์—์„œ ๊ฐ์ฒด ํ’€๋ง์„ ์ž˜๋ชป ์ ์šฉํ•˜๋ฉด, ๊ฐ์ฒด๋“ค์ด ๊ฐ•์ œ๋กœ ์˜ค๋ž˜ ์‚ด์•„๋‚จ๊ฒŒ ๋˜์–ด ๊ตฌ์„ธ๋Œ€(Old Generation) ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์••๋ฐ•ํ•˜๊ณ  ์˜คํžˆ๋ ค GC ์„ฑ๋Šฅ์„ ์•…ํ™”์‹œํ‚ค๋ฉฐ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰๋งŒ ๋Š˜๋ฆด ์œ„ํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋“œ์‹œ ํ”„๋กœํŒŒ์ผ๋Ÿฌ๋ฅผ ํ†ตํ•œ ์„ฑ๋Šฅ ๋ณ‘๋ชฉ ํ™•์ธ ํ›„ ์„ ๋ณ„์ ์œผ๋กœ ๋„์ž…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. --- _Last updated: 2026-04-15_ - Raw Source: 00_Raw/2026-04-20/Object Pooling (์˜ค๋ธŒ์ ํŠธ ํ’€๋ง).md ---