티스토리 뷰

유니티

기능 프리뷰: 점진적 가비지컬렉션

Soft-ice-cream 2019. 1. 30. 07:21

https://blogs.unity3d.com/kr/2018/11/26/feature-preview-incremental-garbage-collection/?utm_campaign=unitynews_korea_newsletter_2019-1-UTK_Newsletter&utm_content=UTK_Newsletter_201901.html&utm_medium=email&utm_source=Eloqua&fbclid=IwAR0BXz2JKweyrgF4pK3Mevcd2iFnJc2iwuOzSfHF5-pKRqMTCL-5DwzTB5U&elqTrackId=8037f673dc52458d96695f34f5afa919&elq=b0a92e4d151b41f6806386e6d7d817c6&elqaid=17572&elqat=1&elqCampaignId=5854


기능 프리뷰: 점진적 가비지 컬렉션


가비지컬렉터

가비지컬렉션을 한다.


가비지컬렉션

필요없는 메모리를 수집한다.


Boehm–Demers–Weiser 가비지컬렉터

Unity는 Boehm–Demers–Weiser 가비지컬렉터를 사용한다.

이는 stop-the-world 방식의 가비지 컬렉터로, 가비지 컬렉션을 수행해야 할 때마다 실행 중인 프로그램을 중지했다가 작업이 모두 완료된 후에야 실행을 재개한다. 


GC

가비지컬렉터.


GC 스파이크

프로그램 실행이 가비지컬렉터에 의해 임의로 중지되어 원활한 애니메이션에 필요한 일관된 프레임 속도를 유지할 수 없다. 이러한 중단(간섭)을 GC스파이크라고 한다.

프로파일러의 일정한 프레임 시간 그래프 상에서 스파이크처럼 표시되는 것을 표현한 말이다.


점진적 가비지컬렉션 

점진적GC 방식도 동일한 Boehm–Demers–Weiser GC를 사용하지만 점진적 모드로 실행하므로 GC 작업을 여러 개의 슬라이스로 분할한다. 

따라서 GC 작업을 위해 프로그램 실행을 한 번에 오랫동안 중단하지 않고 여러 번에 걸쳐 짧게 중단할 수 있다.

이렇게 하면 GC에 소요되는 시간의 총량이 줄어드는 것은 아니지만, 여러 개의 프레임에 걸쳐 워크로드를 분산함으로써 원활한 애니메이션의 맥을 끊는 GC스파이크 문제를 크게 줄일 수 있다.


마킹 단계

모든 관리되는 오브젝트를 스캔하여 이들 오브젝트가 레퍼런스하는 다른 오브젝트를 찾고 아직 사용 중인 오브젝트를 추적한다.


요약

GC는 GC스파이크 때문에 원활한 애니메이션에 필요한 일관된 프레임 속도를 유지할 수 없다.

점진적GC를 사용할 때, GC 작업이 여러 프레임에 걸쳐 분할되어 각 프레임에 대해 짧은 시간만 사용하므로 동일한 프로젝트가 일관된 60fps 프레임 속도를 유지한다.

점진적GC를 사용하지 않을 때, 프로젝트에 몇 초마다 GC스파이크가 발생하여 원활한 60fps 프레임 속도를 방해한다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함