티스토리 뷰
오브젝트 풀 패턴 (Object Pool Pattern)
Object Pool Pattern?
오브젝트 풀 패턴은 생성 디자인 패턴으로, 요청이 들어왔을 때 매번 할당및 삭제를 하는 것이 아니라 미리 만들어 둔 객체 집합 (Pool) 에서 객체를 요청하고 다 사용후 반환하는 형태의 디자인 패턴.
강점
- 인스턴스화 하는데 많은 비용이 들고, 생성 파괴가 자주 일어날 수 있는 상황에 사용시 인스턴스화 비용을 아낄 수 있어 성능 향상을 이끌 수 있다.
- 인스턴스 생성 파괴가 빈번히 생기게 되면 메모리 단편화(파편화) 문제가 생길 수 있다. 이 경우 메모리가 충분함에도 불구하고 메모리를 사용할 수 없는 경우가 생길 수 있는데, 인스턴스를 미리 만들어 둔다면 이와 같은 문제를 해결할 수 있다.
- 메모리 단편화(Memory Fragmentation)
약점
- 적절한 경우가 아닌 상황에 사용시 쓸데없는 리소스를 낭비하게 되는 결과로 이어질 수 있다.
- Reachable 한 객체의 수가 늘어나 가비지 컬렉터의 성능에 영향을 미칠 수 있다.
- 오브젝트의 생성/삭제 방식이 언어의 표준과 차이가 생겨 실수로 반환하지 않아 유휴자원이 될 가능성이 높아진다.
- 오브젝트 풀에 반환한 데이터를 초기화하는 것을 놓치는 상황이 자주 발생하여 예상치 못한 결과가 생길 가능성이 있다.
사용 예시
- DB에 연결할 때 쓰이는 커넥션 객체를 풀링(Pooling) 하는 커넥션 풀이 있다.
- 서버에 새로운 요청이 들어왔을 때 새로운 스레드를 생성하는 것이 아니라 빌려오는 스레드 풀 이 있다.
- 소켓 통신 시 생성하는 소켓 객체를 풀링 하는 소켓 풀이 있다.
Java의 Object Pool 구현
- 아래 코드는 해당 사이트에서 참조하였습니다.
추가! Java의 Object Pool 을 쉽게 제공해주는 라이브러리
Apache Commons Pool
'Infrastructure' 카테고리의 다른 글
세션 불일치 문제와 해결방법 (0) | 2022.07.25 |
---|---|
쿠키(Cookie)와 세션(Session) (0) | 2022.07.24 |
메모리 풀 (Memory Pool) (0) | 2022.07.22 |
메모리 단편화(Memory Fragmentation) (0) | 2022.07.20 |
SOLID - [좋은 객체지향 설계를 위한 5가지 원칙] (0) | 2022.07.14 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- pass by value
- RestAssured
- 장애 해결기
- 컴포짓 패턴
- 객체 풀
- Clean Architecture
- 동적 타입 언어
- pool
- 정적 타입 언어
- 뾰족함
- 외부 단편화
- Sticky Session
- OOP
- 메모리 파편화
- 육각형 아키텍처
- 동적 디스패치
- Memory Fragmentation
- SpringBoot 2.2
- 메모리 단편화
- pass by reference
- 클린 아키텍처
- ATDD
- 수평 분할
- 내부 단편화
- java
- multimap
- Session
- Object Pool
- 세션 불일치
- 수직 분할
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함