2.4 KiB
2.4 KiB
id, category, confidence_score, tags, last_reinforced
| id | category | confidence_score | tags | last_reinforced | |||||
|---|---|---|---|---|---|---|---|---|---|
| P-REINFORCE-AUTO-OPOOL-001 | 10_Wiki/💡 Topics/AI | 0.98 |
|
2026-04-20 |
Object Pooling (오브젝트 풀링)
📌 한 줄 통찰 (The Karpathy Summary)
"빌려 쓰고 다시 채우는 자원 관리: 가비지 컬렉터(GC)의 습격으로부터 프레임워크를 보호하기 위해, 객체를 파괴하지 않고 재사용 창고에 보관하는 최적화의 기본형."
📖 구조화된 지식 (Synthesized Content)
오브젝트 풀링(Object Pooling)은 빈번하게 생성되고 파괴되는 객체(총알, 파티클, 적 유닛 등)를 메모리 할당/해제 과정 없이 미리 생성해 둔 목록에서 꺼내 쓰는 기법입니다.
- 동작 매커니즘:
- In-use List / Pool List: 현재 화면에 표시되는 객체와 대기 중인 객체를 분리 관리.
- Get/Release: 필요할 때 풀에서 꺼내 활성화(Reset & Reactivate)하고, 필요 없어지면 파괴하는 대신 다시 풀로 반환(Deactivate).
- 이점:
- GC Spike 방지: C#이나 Java 같은 환경에서 빈번한 메모리 해제로 인한 '프레임 드랍' 예방.
- 할당 오버헤드 감소: 런타임 중의 힙(Heap) 메모리 파편화 방지.
- 설계 시 고려사항:
- Pre-warming: 로딩 중에 필요한 객체를 미리 생성하여 런타임 지연 방지.
- Over-allocation: 풀이 부족할 때 동적으로 확장할 것인지, 아니면 생성을 포기할 것인지에 대한 전략 필요.
⚠️ 모순 및 업데이트 (Contradictions & RL Update)
- 과거 데이터와의 충돌: 과거에는 메모리가 부족하여 무조건 풀링을 썼으나, 현대의 개선된 GC(Incremental GC 등) 환경에서는 작고 수명이 짧은 객체는 오히려 풀링 관리 비용이 더 클 수 있으므로 '프로파일링 후 도입'이 원칙임.
- 정책 변화(RL Update): Unity 2021+ 이후 엔진 자체적으로
UnityEngine.PoolAPI를 제공함에 따라, 개발자가 직접 바퀴를 재발명하지 않고 표준화된 풀링 인터페이스를 사용하는 정책이 권고됨.
🔗 지식 연결 (Graph)
- Related: Graphics & Performance, Memory & Systems, Game-Feel-and-Juiciness, Design Patterns
- Modern Tech/Tools: Unity ObjectPool API, Entitas (ECS Framework).