유니티 점진적 가비지 수집(incremental garbage collection)

유니티 점진적 가비지 수집(incremental garbage collection)

유니티의 가비지콜렉터는  Boehm–Demers–Weiser garbage collector를 사용한다. 

https://www.hboehm.info/gc/

가비지콜렉터가 가비지 수집을 수행할때 프로그램 코드 실행 및 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

 

Unity - Manual: Incremental garbage collection

Garbage collector overview Disabling garbage collection Incremental garbage collection Incremental garbage collection (GC) spreads out the process of garbage collection over multiple frames. This is the default garbage collection behavior in Unity. To enab

docs.unity3d.com

 

댓글

Designed by JB FACTORY