Unity 점진적 가비지 컬렉션 가이드

개요

Unity에서 메모리 관리는 매우 중요합니다. 점진적 가비지 컬렉션(Incremental Garbage Collection)은 기본적으로 가비지 컬렉션을 여러 프레임에 나누어 수행하여 성능 스파이크를 줄이는 기능입니다.

점진적 가비지 컬렉션의 이점

  • 성능 안정성: 작업량을 여러 프레임에 분산하여 GC 관련 성능 스파이크를 줄입니다.
  • 프레임 속도 유지: 각 프레임의 짧은 시간 조각을 사용하여 일관된 프레임 속도를 유지합니다.

설정 방법

  1. Unity 에디터에서 Edit > Project Settings > Player 경로로 이동합니다.
  2. Other Settings > Configuration > Use Incremental GC를 활성화합니다.

기본 사항

  • Unity는 Boehm–Demers–Weiser 가비지 컬렉터를 사용합니다.
  • 점진적 모드에서는 가비지 컬렉턴이 메인 CPU 스레드를 불필요하게 중단하지 않고 실행됩니다.

점진적 가비지 컬렉션의 예

점진적 GC 활성화

  • 프로파일러의 작업을 여러 프레임에 분산.
  • 일관된 60fps를 유지.

점진적 GC 비활성화

  • GC 스파이크 발생.
  • 애플리케이션의 성능 저하.

GC 스파이크의 문제

가비지 컬렉터가 작업을 수행할 때 애플리케이션의 실행이 중단되기 때문에 실시간 애플리케이션에서 문제를 야기할 수 있습니다. 이로 인해 게임의 흐름이 끊기고 사용자 경험이 저하됩니다.

VSync와 타겟 프레임 속도 조정

  • VSync 또는 Application.targetFrameRate를 사용하는 경우, Unity는 잔여 시간에 따라 GC에 할당할 시간을 조정합니다.

Scripting.GarbageCollector 클래스 사용

  • 점진적 가비지 컬렉션을 더욱 정밀하게 제어할 수 있습니다.
  • 사용자가 직접 남은 시간을 계산하여 GC에 제공할 수 있습니다.

점진적 가비지 컬렉션 비활성화

  1. 플레이어 설정 창에서 Use Incremental GC를 비활성화합니다.
  2. GC 스파이크가 잦은 경우, 비활성화하여 성능을 개선할 수 있습니다.

마킹 단계와 레퍼런스

레퍼런스가 자주 변경되면 가비지 컬렉터가 다시 스캔해야 하기 때문에 성능에 영향을 줄 수 있습니다. 삭제해선 안 되는 오버헤드가 발생할 수 있습니다.

결론

대부분의 Unity 프로젝트는 점진적 가비지 컬렉션을 통해 성능을 개선할 수 있으며, 프로파일러를 통해 언제나 성능을 모니터링해야 합니다.

참고 자료

제목 링크
Unity 공식 문서 docs.unity3d.com
프로파일러 사용법 Profiler in Unity
메모리 관리 Memory Management in Unity

이 문서는 Unity의 가비지 컬렉션에 대한 기본 개념을 소개하고 점진적 가비지 컬렉션의 이점을 설명합니다. 더 안전하고 효율적인 게임 개발을 위해 이 기능을 적절히 활용하시기 바랍니다.

Read more

Unity 매뉴얼 스크립팅 API 해설

이 문서는 Unity의 매뉴얼 스크립팅 API에 대한 간단한 해설과 활용 예제들을 포함하고 있습니다. Unity는 게임 개발 플랫폼으로, 스크립팅 API를 통해 게임의 다양한 기능을 제어하고 수정할 수 있습니다. 버전 Unity 스크립팅 API는 여러 버전으로 제공됩니다. 주의 깊게 선택하여 사용하는 것이 중요합니다. 버전 설명 2023.2 최신 기능 및 버그 수정이 추가됨

By 이재협/실장/시스템개발실/PHYSIA

Unity 매뉴얼 스크립팅 API 설명서 해설

이 문서는 Unity의 매뉴얼 스크립팅 API에 대한 정보를 제공하며, 버전에 따라 다르게 적용되는 내용들을 설명합니다. 본 문서에서는 주요 내용을 간단히 정리하고 활용 가능 예제를 통해 이해를 돕겠습니다. 기본 개념 Unity에서 스크립팅 API는 게임 오브젝트와 그들의 동작을 제어하기 위한 강력한 도구입니다. 이를 통해 게임의 로직, 물리 엔진, 애니메이션 및 사용자 인터페이스를

By 이재협/실장/시스템개발실/PHYSIA

Unity 스크립팅 API 가이드

이 문서는 Unity의 스크립팅 API에 대해 설명합니다. Unity는 게임 개발을 위한 인기 있는 엔진으로, 강력한 스크립팅 기능을 제공합니다. 이 가이드는 Unity에서 스크립트를 작성하고 사용하는 방법을 이해하는 데 도움을 드립니다. 목차 * Unity 스크립팅 소개 * 기본 스크립트 생성 * 스크립트 사용 예제 * 응용 프로그램 * 참고 자료 Unity 스크립팅 소개 Unity는 C# 프로그래밍 언어를

By 이재협/실장/시스템개발실/PHYSIA