Home [UE4] 언리얼 엔진의 Garbage Collection
Post
Cancel

[UE4] 언리얼 엔진의 Garbage Collection

언리얼 공식 문서 - Garbage Collection

참고 문서1

1. Garbage Collection

1
자세한 내용은 공식 문서를 참고하세요
  • 게임 엔진에서 가장 중요한 작업 중 하나는 메모리 관리이며 언리얼 엔진4의 접근 방식은 Garbage Collection을 수행하는 것이다.
    • 엔진은 더 이상 필요없는 객체를 자동으로 삭제한다.
      • 더 이상 필요없는 객체란?: 더 이상 다른 객체에 의해 참조되지 않음
  • 언리얼 엔진은 Mark & Sweep 단계를 사용하여 메모리 관리를 진행한다.

  • 언리얼은 GC를 수행하기 위해 리플렉션 시스템을 사용
    • 엔진이 객체와 속성들을 알고 있고 그러기에 더 이상 사용되지 않아 삭제되어도 좋은 객체들을 구분할 수 있기 때문
    • 구분하기 위해 레퍼런스 그래프 를 만들어 확인한다.

Reference Graph(레퍼런스 그래프)

(Mark & Sweep 방식)

  • 그래프의 루트에는 “Root Set“이라 지정된 오브젝트 세트가 존재
    • Root Set“에 포함된 객체는 GC 대상에서 제외된다.
    • 어떤 언리얼 오브젝트도 UObjectBaseUtility::AddToRoot 함수를 통해 “Root Set“에 추가할 수 있다.
      (Ex. UObjectXXX->AddToRoot()) ***
  • 가비지 콜렉션이 실행되면 엔진은 “Root Set“부터 시작해 알려진 UObject 레퍼런스 트리를 검색하여 참조된 오브젝트를 전부 추적한다.
    • 참조되지 않은 객체(= 트리 검색에서 찾지 못한 객체)들은 더 이상 필요하지 않은 오브젝트라 판단하고 제거할 수 있다.

엔진에서 자동으로 메모리 관리를 하는 것이기 때문에 “규칙” 을 지켜줘야 제대로 작동하게 된다.

This post is licensed under CC BY 4.0 by the author.