티스토리 뷰

Infrastructure

메모리 풀 (Memory Pool)

Hero_O 2022. 7. 22. 08:00

메모리 풀 (Memory Pool)

 

 

메모리 풀이란?

메모리 풀은 필요 크기의 메모리를 미리 할당받고, 필요할 때마다 사용하고 반납하는 방법. 메모리 할당과 해제가 자주 일어나는 경우에 적합하다.

 

 

메모리풀의 장점
  1. 메모리를 동적으로 할당받고 해제하는 과정이 자주 반복되게 되면 메모리 단편화 문제가 발생할 수 있다. 이렇게 메모리 단편화가 생기면 사용 가능한 메모리 공간이 줄거나, 읽기•쓰기 성능에 안 좋은 영향을 미칠 수 있다. 메모리 풀을 사용하면 이러한 메모리 단편화 문제를 해결할 수 있다.

 

 

2. 메모리 할당및 해제를 위해서는 시스템 콜(System Call)이 필요하다. 시스템 콜은 유저 모드에서 작업을 하는 것보다 더 많은 리소스를 필요로 하는데, 메모리 풀을 사용하게 되면 유저 코스트로 객체를 생성할 수 있어 성능적인 이점을 얻을 수 있다.

  • malloc을 사용해 생성된 객체들은 각각 따로 해제해주어야 하는데, 메모리 풀을 사용한 경우 메모리 해제를 단 번에 할 수 있다.
  • 한 번에 할당받은 메모리 내에서 객체를 생성하기 때문에 객체를 생성할 때마다 malloc을 호출할 필요가 없어진다.

 

3. 메모리 블록의 메타정보를 각각 생성할 필요 없어져, 공간 낭비를 줄일 수 있다.

메모리 풀의 문제점
  1. 메모리 풀은 메모리를 미리 할당하고 있는 방식이기 때문에, 메모리 단편화로 생기는 낭비량보다 사용하지 않는 메모리 풀의 크기가 크다면 메모리 누수가 발생하는 방식이다.
댓글