유니티 GC 확인 방법을 제대로 이해하면 프레임 드랍의 원인을 정확히 파악할 수 있습니다.
유니티 가비지 컬렉션은 눈에 보이지 않기 때문에 Profiler를 통해 직접 확인하는 과정이 반드시 필요합니다.
많은 경우 “GC 때문인 것 같다”는 추측으로 최적화를 진행합니다.
하지만 정확한 확인 없이 진행하면 잘못된 방향으로 갈 수 있습니다.
👉 반드시 Profiler를 통해 실제 데이터를 확인해야 합니다.
유니티 GC 확인이 중요한 이유
GC는 눈에 보이지 않습니다.
그래서 다음과 같은 문제가 생깁니다.
- 원인을 잘못 판단함
- 불필요한 최적화 진행
- 시간 낭비
👉 Profiler는 “추측”을 “데이터”로 바꿔줍니다.
Profiler 실행 방법
유니티에서 Profiler는 다음 경로에서 실행할 수 있습니다.
Window → Analysis → Profiler
실행하면 다양한 성능 데이터를 확인할 수 있습니다.
GC 확인하는 핵심 지표
Profiler 화면에서 GC 관련 흐름을 보면 다음과 같이 확인할 수 있습니다.

👉 GC 문제는 결국 “어디서 메모리가 생성되는지”를 찾는 작업입니다.
Profiler에서 GC 관련해서 가장 중요한 항목은 다음입니다.
- GC Alloc
- GC.Collect
이 두 가지를 중심으로 확인하면 됩니다.
GC Alloc (가장 중요)
👉 매 프레임 발생하는 메모리 할당량
이 값이 0이 아니라면, 매 프레임 메모리가 생성되고 있다는 의미입니다.
즉, GC가 발생할 가능성이 있다는 뜻입니다.
👉 목표: GC Alloc = 0
특히 Update에서 발생하는 GC Alloc은 반드시 제거해야 합니다.
GC.Collect
👉 실제 GC가 실행된 시점
이 값이 보이면 이미 GC가 발생한 상태입니다.
이 순간 프레임 드랍이 발생할 수 있습니다.
👉 GC.Collect는 최대한 보이지 않게 만드는 것이 목표입니다.
GC spike 확인하기
Profiler에서 타임라인을 보면 특정 구간에서 그래프가 튀는 경우가 있습니다.
이것이 GC spike입니다.
이 구간에서 프레임이 멈춘 것처럼 보일 수 있습니다.
👉 spike가 있는지 먼저 확인하세요.
Deep Profile 사용 (주의)
Deep Profile을 사용하면 더 자세한 정보를 확인할 수 있습니다.
하지만 성능 오버헤드가 크기 때문에 주의해야 합니다.
👉 필요한 경우에만 사용하세요.
문제 코드 찾는 방법
GC Alloc이 발생하는 프레임을 클릭하면, 어떤 코드에서 메모리가 생성됐는지 확인할 수 있습니다.
이 기능이 매우 중요합니다.
👉 GC 문제는 결국 코드에서 발생합니다.
따라서 문제 코드를 정확히 찾아야 합니다.
실전 분석 순서
- GC Alloc 확인
- Spike 확인
- 문제 프레임 선택
- 코드 위치 확인
- 해당 코드 수정
👉 이 순서만 반복하면 GC 문제를 해결할 수 있습니다.
실수하기 쉬운 부분
- Editor에서만 확인
- 실제 기기 테스트 안함
- Deep Profile 과다 사용
👉 반드시 실제 빌드 환경에서도 확인하세요.
정리
- GC는 Profiler로 확인해야 한다
- GC Alloc은 가장 중요한 지표다
- GC spike는 프레임 드랍의 원인이다
- 문제는 항상 코드에서 시작된다
👉 최적화는 감이 아니라 데이터로 하는 작업입니다.
마무리
이 시리즈를 통해 다음 내용을 모두 정리했습니다.
- GC 개념
- GC 동작 원리
- GC 발생 패턴
- GC 줄이는 방법
- GC 확인 방법
👉 이제 유니티 메모리 문제를 스스로 해결할 수 있는 상태입니다.
🎯 한 단계 더 나아가고 싶다면
유니티 성능 최적화는 결국 엔진 내부 동작을 이해하는 과정입니다.
게임 엔진 구조를 직접 구현해보면 메모리 관리와 렌더링 구조를 더 깊이 이해할 수 있습니다.