기술 노트

메모리 할당 전략 비교: 1MB * 100 vs 100MB * 1

anothel 2025. 1. 7. 08:28

1. 개요

메모리 할당 방식은 프로그램 성능과 안정성에 큰 영향을 미친다. 같은 양의 메모리를 사용하더라도, 할당 전략에 따라 메모리 조각화(fragmentation)와 관리 오버헤드의 차이가 발생한다.

이 글에서는 1MB 메모리를 100번 할당하는 방식과 100MB를 한 번에 할당하는 방식의 메모리 사용 패턴을 분석하고, 각각의 장단점을 비교한다.

2. 1MB * 100 할당의 특징

1MB 크기의 메모리를 100번 할당하는 방식의 주요 특징은 다음과 같다.

  • 메모리 관리
    • 메모리 할당이 100번 이루어지며, 각 블록이 개별적으로 관리된다.
  • 메모리 조각화
    • 물리적으로 연속된 메모리가 아닌, 분산된 위치에 메모리가 할당될 가능성이 크다. 이로 인해 메모리 조각화가 발생할 위험이 높아진다.
  • 관리 오버헤드
    • 각 블록에는 메모리 관리 정보를 포함한 추가적인 헤더(metadata)가 필요하므로, 전체 오버헤드가 증가한다.

3. 100MB * 1 할당의 특징

100MB 크기의 메모리를 한 번에 할당하는 방식의 주요 특징은 다음과 같다.

  • 연속 메모리 할당
    • 한 번의 할당으로 100MB의 연속된 메모리 공간을 확보하므로, 메모리 조각화가 줄어들고 관리가 용이하다.
  • 오버헤드 감소
    • 단 한 번의 메모리 할당으로 관리 정보가 추가되므로, 관리 오버헤드가 상대적으로 적다.
  • 할당 실패 가능성
    • 시스템 메모리가 이미 조각화되어 있거나 여유 공간이 부족한 경우, 연속된 100MB를 확보하지 못해 할당이 실패할 가능성이 있다.

4. 1MB * 100 vs 100MB * 1: 관리 오버헤드 비교

메모리 할당자와 운영 체제는 각 할당 블록에 대한 관리 정보를 저장하기 위해 헤더(metadata)를 추가한다.
이를 기준으로 두 방식의 관리 오버헤드를 비교해 보자.

  • 1MB * 100 방식
    • 각 1MB 블록에 32바이트의 헤더가 추가된다고 가정하면, 총 관리 오버헤드는 100 × 32바이트(약 3KB)이다. 따라서 실제 메모리 사용량은 100MB + 3KB가 된다.
  • 100MB * 1 방식
    • 한 번의 할당으로 32바이트의 헤더만 추가되므로, 총 관리 오버헤드는 32바이트에 불과하다. 결과적으로 실제 메모리 사용량은 100MB + 32바이트이다.

5. 실제 메모리 사용량 차이

두 방식의 실제 메모리 사용량은 다음과 같다.

  • 1MB * 100 방식
    • 메모리 할당이 100번 이루어지며, 관리 오버헤드로 인해 총 사용량은 약 100MB + 3KB이다.
  • 100MB * 1 방식
    • 메모리 할당이 한 번만 이루어지며, 관리 오버헤드는 약 100MB + 32바이트로 매우 적다.

결과적으로 1MB * 100 방식은 100MB * 1 방식에 비해 관리 오버헤드가 크다.

6. 결론

1MB 크기의 메모리를 100번 할당하는 방식은 메모리 조각화와 관리 오버헤드가 증가할 가능성이 크다. 반면, 100MB를 한 번에 할당하는 방식은 연속적인 메모리 공간을 확보하며, 관리 오버헤드도 최소화할 수 있어 성능 면에서 유리하다. 하지만, 시스템 환경에 따라 큰 연속 메모리 공간을 확보하지 못해 할당이 실패할 가능성도 있다.

따라서, 프로그램의 요구 사항과 실행 환경을 고려하여 적절한 메모리 할당 전략을 선택하는 것이 중요하다.

728x90