오브젝트 풀링을 링크드 리스트로 하지 않는 이유

예제를 찾아보면, 거의 대다수가 내부적으로 배열을 사용한 컨테이너(List, Stack, Queue 등)를 통해 풀을 구현하더군요.
풀링의 경우 끝에서만 접근이 이루어지는 스택이나 큐 같은 느낌일텐데,
그렇다면 임의 접근이 없으니 링크드 리스트를 통해 (구현에 따라) 가비지가 없는 풀을 구현가능할텐데… 링크드 리스트로 구현하지 않는 이유가 있을까요?

당장 차지하는 메모리가 배열형 풀의 가비지보다 많아서일까요?
아니면 구현이 불편하기 때문일까요?

3 Likes

오브젝트 풀링은 리스트의 끝에 있는 개체에 접근 만 하면 되므로

삽입이나 삭제 같은 변화가 필요치 않습니다.

때문에 삽입, 삭제에 유용한 자료구조인 링크드 리스트 등을 사용 할 이유가 없겠죠

미리 만들어진 객체를 사용하기 위해 관리 하는 용도이기에 딱히 가비지컬렉션이 크게 개입 되어 질것도 없어 보이구요

4 Likes