힙 단편화는 동적 메모리 할당 및 해제 과정에서 메모리가 비효율적으로 조각나면서 사용 가능한 메모리가 줄어드는 현상을 말한다. 단편화가 심해지면 메모리가 충분히 남아 있어도 큰 크기의 할당이 불가능해져 성능 저하와 메모리 낭비를 초래할 수 있다.

 

📌 힙 단편화의 종류

힙 단편화는 크게 외부 단편화와 내부 단편화로 나뉜다.

1️⃣ 외부 단편화

  • 할당과 해제를 반복하면, 작은 크기의 빈 공간(조각)이 여러 곳에 생겨 새로운 할당이 어려워지는 현상을 말한다.
  • 힙 메모리 전체 용량은 충분해도, 연속된 큰 블록을 할당할 공간이 부족해진다.
  • 메모리의 낭비가 발생하게 된다.
[  할당됨  ][  할당됨  ][ 빈 공간 ][  할당됨  ][ 빈 공간 ][  할당됨  ][ 빈 공간 ]

 

위와 같이 작은 빈 공간들이 여기저기 퍼져 있으면, 큰 크기의 데이터를 할당할 공간이 부족할 수 있다.

 

2️⃣ 내부 단편화

  • 메모리 할당 단위와 실제 요청 크기 간 차이로 인해 발생하는 낭비를 말한다.
  • 일반적으로 OS나 메모리 할당자는 페이지 크기( 보통 4KB ) 또는 특정 블록 크기 단위로 메모리를 관리한다.
  • 만약 64바이트 단위로 메모리를 할당하는 시스템에서 50바이트를 요청하면, 14바이트가 낭비 되는 것
[  64B 블록  ][  64B 블록  ][  64B 블록  ][  64B 블록  ]
[  50B 사용  ][  30B 사용  ][  10B 사용  ][  5B 사용   ]

 

위와 같이 일부 공간이 채워지지 않고 낭비된다.

 

📌 힙 단편화가 성능에 미치는 영향

1️⃣ 메모리 부족 문제 발생

  • 실제로 사용할 수 있는 메모리는 충분해도 단편화로 인해 새로운 할당이 불가능하다.

2️⃣ 메모리 접근 성능 저하

  • 캐시 친화도가 낮아지고, 불필요한 페이지 테이블 조회가 증가한다.

 

📌 힙 단편화를 줄이는 방법

1️⃣ 메모리 풀 사용

  • 미리 정해진 크기의 메모리 블록을 관리하여 단편화를 방지한다.

2️⃣ 메모리 압축

  • 외부 단편화를 줄이기 위해 메모리를 재정렬하는 방법을 말한다.

'CS' 카테고리의 다른 글

[CS] Bias ( 부동소수점 보정값 )  (0) 2025.04.15
[CS] 부동소수점  (0) 2025.04.15
[CS] 스택과 힙  (0) 2025.04.09
[CS] 메모리 보호 기법 ( ASLR )  (0) 2025.03.11
[cs] 문자열 상수  (0) 2025.02.23

+ Recent posts