카테고리 없음

Object fooling

neocat 2023. 2. 21. 16:01
728x90

메모리 단편화 : Ram에서 메모리의 공간이 조각조각 나뉘어서, 사용가능한 메모리 공간이 있지만 할당이 불가능한 경우 발생한다.

이는 내부, 외부 단편화 로 구분된다.

내부단편화 : 프로세스 가 필요한 메모리 공간 보다 더 크게 할당되어 메모리 공간이 낭비되는 일이 발생

 

외부단편화 : 메모리의 할당과 해제가 반복되어 중간중간 작은 메모리가 발행 할 때 이 작은 메모리 공간을 합하면 다른 프로세스에 할당하는게 가능 하지만 공간이 떨어져 있어 실제로 할당 할 수 없는 상황.

 

마구잡이로 키를 누르면 Object는 생성되고 소멸되길 반복한다. 이때 외부메모리단편화 가 일어난다. 메모리 에 빈공간이 충분함에도 빈공간 들이 따로 떨어져 있어 새로운 Object를 생성 할 수 없는 것을 외부 메모리 단편화 라고 한다. 

 

유니티의 GC는 Compaction기능을 지원하지 않는다. 그래서 Instantiate(혹은 new)와 Destroy의 사용을 최대한 자제하는게 유니티 메모리 최적화의 핵심이다.

그래서 적당히 Object를 미리 생성해놓고, Object가 없어져야 할 조건에 SetActive(false)를 해서 안보이게 한 후, 재사용하는 방법을 Object fooling이라고 한다.

Object fooling단점이라면, Object가 필요가 없을 때에도 메모리에 존재한다는 것인데, Object의 max 갯수는 테스트를 통해 적당한 수치를 찾는게 좋다.

728x90