Learning
토픽 55 / 85·메모리 관리

메모리 할당 전략 (Memory Allocation Strategy)

메모리 할당 전략 (Memory Allocation Strategy)

프로세스 실행 중 필요한 메모리를 동적으로 할당하고 해제하는 기법으로, 힙 영역에서 malloc/free(C), new/delete(C++), 또는 GC 기반(Java/Python) 방식으로 관리

목적: 효율적 메모리 활용, 단편화 최소화, 빠른 할당/해제, 메모리 안전성

메모리 영역

  • 코드(Text) 영역: 실행 코드 저장, 읽기 전용
  • 데이터(Data) 영역: 전역변수, 정적변수, 초기화된/미초기화된 데이터
  • 힙(Heap) 영역: 동적 할당, 런타임 크기 결정, 위로 성장, GC/수동 해제
  • 스택(Stack) 영역: 지역변수, 함수 호출 프레임, 자동 할당/해제, 아래로 성장

힙 할당 기법: First-Fit(첫 번째 적합), Best-Fit(최소 여유), Worst-Fit(최대 여유), Next-Fit(이전 위치부터)

메모리 할당자: ptmalloc2(glibc 기본), jemalloc(FreeBSD/Firefox), tcmalloc(Google/스레드 캐시), mimalloc(Microsoft)

스마트 포인터(C++/Rust)

  • unique_ptr / Box: 단일 소유권, 자동 해제, 이동만 가능
  • shared_ptr / Rc/Arc: 참조 카운팅, 공유 소유권, 순환 참조 주의
  • weak_ptr / Weak: 약한 참조, 순환 참조 방지

Rust 소유권 모델: 소유권(Ownership), 빌림(Borrowing), 수명(Lifetime), 컴파일 타임 메모리 안전성 보장, GC 불필요

비교: 수동관리(C/빠름/위험) vs GC(Java/안전/오버헤드) vs 소유권(Rust/안전/학습곡선)

연관: 가비지 컬렉션, 힙, 스택, 버디 시스템, 메모리 단편화