메모리 관리를 자동으로 해주는 기능입니다.
사용중이던 객체나 작업이 종료되면 자동으로 찾아서 메모리를 해제하는 역할을 합니다.
모든 접근 가능한 오브젝트를 마킹합니다.
마킹되지 않은 객체들을 힙에서 제거하여 메모리를 회수합니다.
남아있는 객체들을 힙의 시작부분으로 이동시켜 메모리 파편화를 줄입니다.
C#에서 가비지 컬렉션은 세대 기반으로 동작합니다.

0세대는 가장 최근 할당된 객체들이 있습니다.
1세대는 0세대에서 살아남은 객체들이 있는 공간입니다.
2세대는 1세대에서 살아남은 객체들이 있는 공간입니다.
LOH(Large Object Heap)에는 크기가 큰 객체가 바로 할당됩니다.
세대별로 내려가면서 GC가 작동하게 된다.
하지만 GC는 연산량이 크기 때문에 많이 작동하게 되면 성능에 문제가 있을 수 있다.
자주 생성되거나 사라지는 객체를 줄인다.
값타입을 사용하여 힙 할당을 줄인다.
임시 객체의 생성을 최소화하고, 필요한 경우 메모리를 명시적으로 해제합니다.
LOH에 할당되는 큰 객체 사용을 최소화한다.
코드 성능을 최적화 하여 메모리 사용을 줄여야한다.
유니티는 옛날 버전의 GC를 사용중이다.
유니티에서의 GC는 마크와 스위핑만 존재한다.
그렇기 때문에 최적화가 반드시 필요하다.
가비지 컬렉션을 줄이는 방법을 제대로 알아두길 바란다.
(공부 출처)
1. https://unity-programming-study.tistory.com/33
2. https://autumncat.tistory.com/88