Unity 가비지 컬렉션 관리 가이드
목차
가비지 컬렉션 개요
Unity에서 가비지 컬렉션은 메모리 사용을 관리하는 중요한 기능입니다. 이 기능은 자동으로 사용되지 않는 객체를 식별하여 메모리를 회수합니다. 그러나 특정 상황에서 가비지 컬렉션을 비활성화하거나 수동으로 관리하는 것이 더 유리할 수 있습니다.
가비지 컬렉션 비활성화
가비지 컬렉터를 비활성화하면 CPU 사용량을 줄일 수 있지만, 이로 인해 메모리 사용량이 절대로 감소하지 않습니다. 따라서 가비지 컬렉터를 비활성화하기 전에 신중한 메모리 관리가 필요합니다.
주요 API
API | 설명 |
---|---|
System.GC.Collect | 전체 차단 가비지 컬렉션을 실행합니다. |
GarbageCollector.Mode.Disabled | 가비지 컬렉터를 완전히 비활성화합니다. |
GarbageCollector.Mode.Manual | 자동 호출을 비활성화하고 System.GC.Collect를 사용할 수 있습니다. |
GarbageCollection.CollectIncremental | 점진적 가비지 컬렉션을 수행합니다. |
점진적 가비지 컬렉션
점진적 가비지 컬렉션은 메모리 할당량을 계산하고 조정할 수 있는 방법입니다. 성능이 중요한 짧은 기간 동안만 가비지 컬렉션을 비활성화하고, 이후에는 다시 활성화하여 적절한 메모리 관리를 유지해야 합니다.
가비지 컬렉션 베스트 프랙티스
- 모든 메모리 할당: 가비지 컬렉터를 비활성화하기 전에 모든 메모리를 할당합니다.
- 할당 최소화: 비활성화된 기간 동안에는 추가 메모리 할당을 피합니다.
- 수명 긴 할당: 수명 긴 객체만 가비지 컬렉터를 비활성화합니다.
예제 코드
다음은 Unity에서 가비지 컬렉션을 비활성화하고, 수집을 수동으로 관리하는 예제 코드입니다.
// 가비지 컬렉터 비활성화
GarbageCollector.Mode = GarbageCollector.Mode.Disabled;
// 메모리 할당
GameObject myObject = new GameObject();
myObject.transform.position = Vector3.zero;
// 필요 시 가비지 컬렉션 실행
System.GC.Collect();
이 문서를 통해 Unity의 가비지 컬렉션을 효과적으로 관리하는 방법을 이해하고, 필요에 따라 관련 API를 활용할 수 있기를 바랍니다.