String
-
Object.name
프로퍼티는 호출하는 것 자체만으로 가비지를 하나 생성한다. -
GameObject.tag
프로퍼티는 호출하는 것 자체만으로 가비지를 하나 생성한다.- 태그 비교 시 반드시
.CompareTag()
메소드를 사용해야 한다.
- 태그 비교 시 반드시
Component
GetComponent<T>()
메소드는 호출하는 것 자체만으로 가비지를 하나, 에디터에서는NullErrorWrapper
까지 하나 더 생성한다.- 반드시
TryGetComponent()
메소드를 사용하는 것이 좋다. (가비지를 생성하지 않는다.)
- 반드시
Collections
-
List<T>
,Dictionary<K,V>
와 같은 제네릭 컬렉션은new
를 통한 객체 생성을 최대한 피하고, 대신.Clear()
로 내부를 비우며 재사용하는 것이 좋다. -
제네릭 컬렉션은 크기가
4
부터 두배씩 증가할 때마다 내부의 기존 배열을 제거하고 새로운 배열을 할당하므로, 객체 생성 시 생성자의 매개변수로capacity
를 미리 지정해주는 것이 좋다.
Delegates
-
Action
,Action<T>
,Func<T>
등의 델리게이트 타입 변수들은 힙에 할당된다. -
따라서 가비지를 생성한다.
-
매개변수를 통한 전달 시 클래스 타입과 마찬가지로 참조를 전달한다.