힙의 파편화(Heap Fragmentation)

2경빈·2025년 5월 4일

CS

목록 보기
9/11

힙의 파편화(Heap Fragmentation)

프로그램이 동적으로 메모리를 반복적으로 할당하고 해제하면서 힙 메모리 공간이 여러 조각으로 나뉘는 현상을 말한다. 이로 인해 충분한 전체 여유 공간이 있음에도 불구하고 큰 크기의 메모리를 연속적으로 할당하지 못하는 상황이 발생할 수 있다.

외부 파편화 (External Fragmentation)

외부 파편화란 전체적으로는 충분한 메모리 공간이 있음에도 불구하고, 이 공간들이 연속되지 않아 큰 블록을 할당할 수 없는 상태를 말한다. 메모리 블록들이 비연속적으로 흩어져 있어 연속된 큰 공간이 필요한 경우 할당에 실패할 수 있다.

내부 파편화 (Internal Fragmentation)

내부 파편화란 프로그램이 요청한 메모리보다 더 큰 크기의 메모리 블록이 할당되고, 이 중 사용되지 않는 일부 공간이 낭비되는 상태를 말한다. 보통 정렬, 메모리 정렬 단위 등의 이유로 발생한다.

파편화 문제의 원인과 영향

파편화는 메모리 효율성을 저하시켜 결국 시스템 성능 저하나 메모리 부족 오류를 유발할 수 있다. 특히 외부 파편화는 메모리 양이 충분해도 큰 객체의 할당에 실패하게 만들 수 있다.

파편화 해결 방안

  • 메모리 압축(compaction): 흩어진 메모리 블록을 한쪽으로 모아 연속적인 빈 공간을 확보하는 기법이다.
  • 메모리 풀(memory pool): 자주 사용하는 크기의 블록들을 미리 준비해 놓고 효율적으로 재사용하는 기법이다.
  • 가비지 컬렉터(Garbage Collector): 일부 언어에서는 가비지 컬렉터가 주기적으로 동작하여 파편화를 완화한다.
profile
eggs before hatching

0개의 댓글