https://gall.dcinside.com/mgallery/board/view/?id=game_dev&no=171950&page=1
 

" 좁 시스템은 언 매니지드 콜렉션을 사용하도록 하던데

이러한 언 매니지드 타입형들에 대해서 dispose 해야 한다고 나와있거든
근데 예제 코드들 보면 잡 시스템안에서 execute 때리고 디스포즈는 코빼기도 안보이던데
그냥 ref이랑 in 파라미터들로 되어있는 잡이라 그런가?
어느때 써야 할지 모르겠어

어떤 예제는 ecb가 알아서 디스포즈하고"


dispose 안 해도 될 때: 해당 변수 선언 시 메모리 할당 매개 변수에 allocator.temp 혹은 allocator.tempjob으로 수명을 정해 놓은 경우. tmp는 1프레임 뒤에 자동으로 dispose된다. tempjob은 4프레임.

해당 변수 선언이 프레임 마다 생성되는 게 아닌 경우: 예를 들면 시스템의 OnCreate()에 NativeArray를 만들었거나, Update에서 선언하긴 했는데 시스템 자체가 딱 한번만 업데이트하거나. dispose의 목적은 어디까지나 반복되는 메모리 할당으로 인한 메모리 누수를 방지하는 목적이다.


더 찾아보면 한두 가지 상황이 더 나올 수도 있는데, 일반적으로 dispose를 안 해도 되는 건 이상 2개의 케이스임.


근데 개인적인 경험에서, 이상 케이스에 해당 되어도 해당 변수를 다 썼으면 그냥 바로 dispose하는 습관을 들이는 것을 추천함.