티스토리 뷰
메모리 풀 (Memory Pool)
메모리 풀이란?
메모리 풀은 필요 크기의 메모리를 미리 할당받고, 필요할 때마다 사용하고 반납하는 방법. 메모리 할당과 해제가 자주 일어나는 경우에 적합하다.
메모리풀의 장점
- 메모리를 동적으로 할당받고 해제하는 과정이 자주 반복되게 되면 메모리 단편화 문제가 발생할 수 있다. 이렇게 메모리 단편화가 생기면 사용 가능한 메모리 공간이 줄거나, 읽기•쓰기 성능에 안 좋은 영향을 미칠 수 있다. 메모리 풀을 사용하면 이러한 메모리 단편화 문제를 해결할 수 있다.
2. 메모리 할당및 해제를 위해서는 시스템 콜(System Call)이 필요하다. 시스템 콜은 유저 모드에서 작업을 하는 것보다 더 많은 리소스를 필요로 하는데, 메모리 풀을 사용하게 되면 유저 코스트로 객체를 생성할 수 있어 성능적인 이점을 얻을 수 있다.
- malloc을 사용해 생성된 객체들은 각각 따로 해제해주어야 하는데, 메모리 풀을 사용한 경우 메모리 해제를 단 번에 할 수 있다.
- 한 번에 할당받은 메모리 내에서 객체를 생성하기 때문에 객체를 생성할 때마다 malloc을 호출할 필요가 없어진다.
3. 메모리 블록의 메타정보를 각각 생성할 필요 없어져, 공간 낭비를 줄일 수 있다.
메모리 풀의 문제점
- 메모리 풀은 메모리를 미리 할당하고 있는 방식이기 때문에, 메모리 단편화로 생기는 낭비량보다 사용하지 않는 메모리 풀의 크기가 크다면 메모리 누수가 발생하는 방식이다.
'Infrastructure' 카테고리의 다른 글
세션 불일치 문제와 해결방법 (0) | 2022.07.25 |
---|---|
쿠키(Cookie)와 세션(Session) (0) | 2022.07.24 |
오브젝트 풀 (Object Pool) (1) | 2022.07.20 |
메모리 단편화(Memory Fragmentation) (0) | 2022.07.20 |
SOLID - [좋은 객체지향 설계를 위한 5가지 원칙] (0) | 2022.07.14 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- ATDD
- 동적 디스패치
- Object Pool
- 뾰족함
- Sticky Session
- java
- pass by reference
- pool
- 메모리 파편화
- 클린 아키텍처
- 육각형 아키텍처
- OOP
- 외부 단편화
- multimap
- Clean Architecture
- RestAssured
- 장애 해결기
- Session
- 메모리 단편화
- 세션 불일치
- 수직 분할
- 컴포짓 패턴
- 내부 단편화
- 객체 풀
- SpringBoot 2.2
- 정적 타입 언어
- pass by value
- Memory Fragmentation
- 동적 타입 언어
- 수평 분할
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함