유니티 GC 확인하는 방법 (Profiler로 메모리 문제 찾는 법)

유니티 GC 확인 방법을 제대로 이해하면 프레임 드랍의 원인을 정확히 파악할 수 있습니다.

유니티 가비지 컬렉션은 눈에 보이지 않기 때문에 Profiler를 통해 직접 확인하는 과정이 반드시 필요합니다.

많은 경우 “GC 때문인 것 같다”는 추측으로 최적화를 진행합니다.

하지만 정확한 확인 없이 진행하면 잘못된 방향으로 갈 수 있습니다.

👉 반드시 Profiler를 통해 실제 데이터를 확인해야 합니다.


//
//

유니티 GC 확인이 중요한 이유

GC는 눈에 보이지 않습니다.

그래서 다음과 같은 문제가 생깁니다.

  • 원인을 잘못 판단함
  • 불필요한 최적화 진행
  • 시간 낭비

👉 Profiler는 “추측”을 “데이터”로 바꿔줍니다.


Profiler 실행 방법

유니티에서 Profiler는 다음 경로에서 실행할 수 있습니다.

Window → Analysis → Profiler

실행하면 다양한 성능 데이터를 확인할 수 있습니다.


//

GC 확인하는 핵심 지표

Profiler 화면에서 GC 관련 흐름을 보면 다음과 같이 확인할 수 있습니다.

유니티 GC 확인 방법과 Profiler에서 GC Alloc과 GC 스파이크를 분석하는 화면 예시
Profiler를 통해 GC Alloc과 GC.Collect, 스파이크 구간을 확인하면 메모리 문제의 원인을 정확히 찾을 수 있습니다.

👉 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 확인 방법

👉 이제 유니티 메모리 문제를 스스로 해결할 수 있는 상태입니다.


🎯 한 단계 더 나아가고 싶다면

유니티 성능 최적화는 결국 엔진 내부 동작을 이해하는 과정입니다.

게임 엔진 구조를 직접 구현해보면 메모리 관리와 렌더링 구조를 더 깊이 이해할 수 있습니다.

👉 C++로 만드는 게임 엔진 프레임워크 강의

//
   

댓글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Please turn AdBlock off

Notice for AdBlock users

Please turn AdBlock off