유니티 uGUI 코드를 살펴보다가 ListPool을 사용하는 부분을 발견했습니다.
주로 Mesh가 업데이트 되어야 할 때마다 버텍스를 관리해줄 때 리스트가 사용됩니다. 매번 리스트를 만들고 사용하면 그 동작이 얼마나 자주 진행되는지에 따라 메모리 누수로 인한 CPU Spike가 발생할 수 있습니다. 이를 방지하기 위해 uGUI 코드에서 internal로 사용되던 자료구조입니다.
구현은 위와 같이 되어있으며 2021.1 버전부터 public 으로 사용할 수 있게 접근제한이 풀렸습니다.
uGUI의 Text 컴포넌트에서 사용되는 VertexHelper 클래스는 이를 리스트풀을 이용해 구현했습니다.
조심해야 할 점은 Release를 제대로 시켜주지 않으면 되려 메모리에 악영향을 줄 수 있다는 것입니다.
명시적으로 Initialize, Dispose 메소드에서 Get(), Release()를 호출하도록 구현해주는편이 안전한 코드 작성에 도움이 됩니다.
빈번하게 List가 생성되고 삭제되어야 하는 로직을 구성할 때 활용할 수 있겠습니다.
'Unity > 작업방식' 카테고리의 다른 글
Unity: Workflow. 유니티 에디터 종료 확인 문구 (0) | 2021.05.30 |
---|---|
Unity: Workflow. Text 추가 효과 적용 - Deformer (0) | 2021.05.13 |
Unity: Workflow. 셰이더 그래프에서 단축키 사용하기 (2) (0) | 2021.05.03 |
Unity: Workflow. 셰이더 그래프에서 단축키 사용하기 (1) (2) | 2021.05.03 |
Unity: Workflow. AllocConsole() 감지 (0) | 2021.05.01 |