본문 바로가기
Swift/Basic

Memory

by songmoro 2024. 10. 31.
728x90

앱 실행 시 Virtual Memory

  1. Swift 앱이 시작될 때, 가상 메모리의 빈 주소 공간을 할당받음
  2. 메인 실행 파일, 라이브러리, 프레임워크를 로드
  3. 디스크로부터 읽기 전용 리소스 로드
  4. 실행 후
    1. 각 스레드의 로컬, 임시 변수에 대해 스택을 사용
    2. 동적 메모리, 수명이 긴 메모리는 힙 사용

 

Heap Memory

  • 힙은 여러 가상 메모리 영역으로 구성
  • 각 영역은 개별 힙 할당으로 분할
    • 할당 내부는 16KB 메모리 페이지로 더 크거나 작을 수 있음
  • 메모리 페이지는 3개의 상태: Clean, Dirty, Swapped(Compressed)
    • Clean page
      • 쓰기가 완료되지 않은 메모리
      • 할당되었지만 사용되지 않았거나, 읽기 전용 파일을 나타내는 페이지
    • Dirty page
      • 앱에 의해 최근에 쓰인(수정된) 페이지
    • Swapped(Compressed) page
      • RAM에서 최근 사용한 항목(LRU)을 압축하고, 압축 해제하는 메모리 최적화 기법
      • 디스크 I/O 작업보다 빠름
      • 디스크에서 페이지 스왑하는 비용 최소화

 

 

728x90

'Swift > Basic' 카테고리의 다른 글

Data Type  (0) 2024.11.07
Concurrency  (0) 2024.11.07
GCD  (0) 2024.10.31
Memory Management  (0) 2024.10.31
Thread  (0) 2024.10.31