오늘은 최적화 기법중 하나인 오브젝트 풀링에 대해서 알아봤습니다.
오브젝트 풀링이란?
오브젝트를 pool 즉 웅덩이로 만들어두고, 그 웅덩이 안에서 필요할때마다 객체를 꺼내서 사용하는
것을 뜻합니다.
쉽게말해 필요한 오브젝트를 미리 만들어두고 필요할 때 빼서 쓰고 다시 반납하도록 하는 기법
Unity에서 기본적으로 사용되는 오브젝트 생성 삭제 함수는 Instantiate , Destroy이다
이 함수를 사용하게 되면 메모리를 생성하고 리소스를 로드하는 등의 초기화 과정이 필요하고 파괴는 파괴 이후 발생하는 가비지 컬렉팅으로 인한 프레임 드랍이 발생할 수 있습니다.
//가비지 컬렉터 글 올리기 및 링크 작성
처음에 메모리가 연속적으로 할당되고 실행 중 메모리가 중간중간 해제되는 경우 새로운 메모리가 할당되려고 할 때, 그 중간에 빈 메모리 사이즈보다 크면 새롭게 채워지지 못하고 마지막 메모리 다음에 할당되게 된다. 그 이후 또 메모리를 할당할 때, 전체적으로 보면 메모리는 남지만 연속적인 메모리 공간은 없어서 메모리 할당에 실패할 수 있다.
즉, 메모리는 남지만 메모리가 부족한 역설적인 상황이 발생할 수 있다.