Metaverse/Unity

Object Pool

onenewkong 2023. 5. 6. 23:07

메모리에 올라간 데이터
데이터 삭제된 메모리 상태

 

 

  • 메모리는 좌측에서 우측으로, 위쪽에서 아래쪽으로 데이터를 저장하는 특징이 있음
  • 이 때 첫번째 이미지와 네번째 이미지를 메모리에서 제거해보면 아래 이미지 처럼 됨
  • 만약, 3번 이미지를 추가로 로드하려면 3번 이미지가 메모리에 로드될 때 필요한 공간은 6칸이 되고 확보하고 있는 빈 공간은 1번과 4번을 제거했으므로 7칸이 남아있음

 

 

그러면 3번 이미지를 로드할 때, 

이렇게 오버 플로우가 발생함

 

 

2번 이미지는 데이터의 손실이 발생해 문제가 생김: 메모리 파편화 / 메모리 단편화 문제

 

 

이를 방지하기 위해 C# / JAVA는 가비지 콜렉터를 돌려 메모리를 정리해주지만, 이는 CPU를 낭비하는 일이므로 비효율적

 

 

따라서, 사용할 데이터를 미리 메모리에 올려 메모리에서 삭제하지 않음

그러면 메모리를 정리할 필요도 없으니 GC가 동작할 일이 없음

 

 

여기서 객체를 풀로 만들어 놓은 것은 오브젝트 풀, 네트워크 연결에 관련된 풀을 미리 잡아 놓은 것은 커넥션 풀이라고 함

 

'Metaverse > Unity' 카테고리의 다른 글

디자인 패턴 요약  (0) 2023.07.24
체감형 AR 디자인 - 최적화  (0) 2023.05.17
C# / 싱글톤 디자인 패턴  (0) 2023.05.06
Raycast  (0) 2023.04.05
deltaTime & fixedDeltaTime  (0) 2023.04.05