UE4에서 GC는 Object들의 Reference Graph를 만들어 참조되지 않은 Object들이 있는지 파악합니다.
Graph의 Root에는 Root Set으로 지정된 Object Set이 있고, 선언되는 모든 Object들은 이 Root Set 밑에 추가됩니다.
GC가 발동되면 Root Set부터 시작하여 Reference Tree를 순회합니다.
이 중 검색되지 않은 Object는 참조자가 없는 것으로 가정하고 제거합니다.
그리고 제거되지 않은 Object들은 UPROPERTY레퍼런스를 유지하거나,
포인터를 다른 언리얼 엔진 컨테이너 클래스에 저장합니다.
다만 Actor와 Component는 예외인데,
Actor는 자신이 속한 Level처럼 Root Set로 다시 링크되는 Object에,
Component는 Actor 자체에 Reference가 있기 때문입니다.
Actor는 Destroy로, Component는 DestroyComponent로 삭제하거나 소유 Actor가 삭제될 때 같이 삭제됩니다.
그리고 이러한 GC는 프로젝트 세팅을 통해 몇가지 수정을 가할 수 있습니다.
'메모장 > 기술면접' 카테고리의 다른 글
수학) Quaternion(쿼터니언)에 대해 설명하시오 (0) | 2020.09.07 |
---|---|
UE4 Montage와 Animation의 차이 (0) | 2020.09.01 |
UE4 UPROPERTY란 무엇인가? (0) | 2020.09.01 |
C++ malloc/free와 new/delete의 차이점 (0) | 2020.08.28 |
C++ Override 시 Virtual Keyword를 써야 하는 이유 (0) | 2020.08.28 |