가비지 컬렉션 시스템
C++에서는 할당받은 메모리는 반드시 프로그래머가 직접 해제를 해줘야 한다
이를 지키지 않으면 메모리 누수부터 여러 문제가 발생한다
프로그램에서 더 이상 사용하지 않는 언리얼 오브젝트를 자동으로 감지하고
특정 상황에 회수하는 시스템을 Garbage Collection System이라고 한다
생성된 모든 언리얼 오브젝트 정보를 모아둔 저장소를 사용해서 추적한다
Mark-Sweep 방식의 가비지 컬렉션
1. 저장소에서 최초 검색을 시작하는 루트 오브젝트에서 시작
2. 루트 오브젝트가 참조하는 개체를 찾아 Mark
3. Mark된 개체로부터 해당 개체가 참조하는 개체를 찾아서 다시 Mark (반복)
4. 이제 저장소에서 Mark된 개체와 그렇지 않은 개체로 나뉨
5. 가비지 컬렉터는 저장소에서 Mark되지 않은 개체들의 메모리 회수 (Sweep)
GUObjectArray
관리되는 모든 언리얼 오브젝트 정보를 저장하는 전역 자료구조이다
GUObjectArray의 요소에는 가비지 컬렉션 관련 플래그 정보가 있다
RootSet 플래그: 다른 언리얼 오브젝트로부터 참조가 없어도 회수되지 않는다
Garbage 플래그: 다른 언리얼 오브젝트로부터 참조가 없어서 회수 예정이 된다
GCCyle
지정된 주기마다 가비지를 몰아서 없앤다
지정된 주기를 GCCycle이라 한다
Project Settings > Garbage Collection에서 확인 가능하다
'게임 엔진 > [코드조선] 언리얼' 카테고리의 다른 글
언리얼 오브젝트 기능 - Smart Pointer (0) | 2024.05.09 |
---|---|
언리얼 오브젝트 기능 - C++ 로우 포인터 문제 해결 (0) | 2024.05.09 |
언리얼 오브젝트 기능 - Interface (0) | 2024.05.09 |
언리얼 오브젝트 기능 - 리플렉션 (0) | 2024.05.09 |
언리얼 오브젝트 기능 - CDO (0) | 2024.05.09 |