유니티 점진적 가비지 수집(incremental garbage collection)
유니티의 가비지콜렉터는 Boehm–Demers–Weiser garbage collector를 사용한다.
가비지콜렉터가 가비지 수집을 수행할때 프로그램 코드 실행 및 CPU 메인스레드를 중지하며 전체 힙을 검사한다(stop-the world garbage collection) 힙의 모든 오브젝트를 처리한 이후에 어플리케이션 실행을 재개함으로 성능에 영향을 미치는 gc 스파이크(중단으로 인해 프로파일러 윈도우의 그래프에서 나타나는 큰 스파이크)가 발생한다.
incremental mode는 가비지콜렉터가 힙의 모든 오브젝트들을 처리하기 위해 긴 중단을 한번만 수행하는 대신에 작업부하를 여러 프레임으로 분할하여 어플리케이션 실행을 더 짧게 중단하는것을 의미한다.
유니티에서 incremental mode는 기본적으로 활성화되어있으며 project settings의 player configuration에서 활성화 및 비활성화할수있다.
incremental mode는 가비지수집을 더 빠르게 만들지않지만 여러 프레임에 작업부하를 분산하기때문에 gc 스파이크 및 gc 관련 성능 스파이크를 줄일수있다. 아래 예에서 incremental mode를 활성화하였을때 스파이크가 빈번히 나타나지만 중단 시간이 짧아진것을 확인할수있다.
https://docs.unity3d.com/Manual/performance-incremental-garbage-collection.html
'유니티게임개발 > 기초공부' 카테고리의 다른 글
유니티에서 GPU 사용 프로파일러 모듈이 지원하는 플랫폼 목록 (0) | 2022.02.23 |
---|---|
유니티에서 모바일에 빌드실행한 게임 디버깅(android device monitor) (0) | 2022.02.23 |
유니티(Unity) 프로젝트 빌드에서 스크립팅 백엔드 IL2CPP (0) | 2022.02.18 |
유니티의 텍스처 압축 포맷(texture compression format, TCF) (0) | 2022.02.18 |
유니티에서 오브젝트의 축 정렬하기(FromToRotation, LookRotation) (0) | 2022.01.11 |