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