언리얼 엔진으로 전환하기 | Unity 및 언리얼 엔진의 가비지 컬렉션
- 언리얼 엔진은 C++의 자동 가비지 컬렉션 부재를 UObject 기반 객체에 대해 GC 시스템으로 보완한다. 🗑️
- GC는 'Mark and Sweep' 방식으로 메모리를 스캔하여 미참조 객체를 회수, Stop-the-World 이벤트 발생 가능. ⏱️
- UObject는 언리얼 엔진 GC의 기본 클래스이며, U 또는 A 접두사로 시작하는 객체는 GC에 의해 관리된다. 🧽
- UProperty는 GC 시스템의 핵심 요소로, 멤버 변수에 대한 필수 리플렉션 데이터를 제공한다. 🔑
- TWeakObjectPtr은 GC를 막지 않는 약한 참조를 제공하며, TSoftObjectPtr은 디스크 상의 에셋 경로를 함께 저장하여 메모리 효율성을 높인다. 💾
- UObject는 NewObject 또는 CreateDefaultSubobject를 통해 생성해야 하며, 명시적인 파괴 힌트는 ConditionalBeginDestroy 또는 DestroyComponent 함수를 사용한다. 🔨
- GC 성능 최적화를 위해 언리얼 인사이트를 활용, 오브젝트 클러스터링 및 Disregard for GC 설정을 조정할 수 있다. ⚙️
- 블루프린트 매크로 대신 함수를 사용하고, C++ 코드로 변환하여 UObject 생성을 줄이는 것이 GC 압력을 낮추는 데 도움이 된다. 💡