[레벨 0] iOS에서의 메모리 구조와 관리 방식에 대해 자세히 설명해주세요.

2024. 12. 30. 11:10·면접

메모리 구조

  1. Clean Memory
    • 페이지 아웃 가능한 데이터로, 메미로 매핑된 파일, 이미지, 프레임워크 등이 포함됩니다.
    • 필요시 디스크에서 다시 로드할 수 있어 시스템에 의해 해제될 수 있습니다.
  2. Dirty Memory
    • 앱에 의해 수정된 메모리로, 런타임 중 생성된 객체나 데이터 구조가 포함됩니다.
    • 디스크와 동기화되지 않아 시스템이 쉽게 해제할 수 없습니다.
  3. Compressed Memory
    • iOS 7부터 도입된 메모리 압축 기술을 통해 관리되는 메모리입니다.
    • 접근되지 않은 페이지를 압축하여 공간을 절약하고, 필요시 다시 압축 해제합니다.

메모리 관리 방식

  1. Automatic Reference Counting (ARC)
    • 컴파일 시점에 자동으로 retain/release 코드를 삽입하여 객체의 참조 횟수를 관리합니다.
    • 참조 횟수가 0이 되면 객체를 자동으로 해제합니다.
  2. 메모리 경고 시스템
    • 시스템 메모리가 부족해지면 앱에 메모리 경고를 보내 불필요한 리소스를 해제할 기회를 제공합니다.
  3. 샌드박스 모델
    • 각 앱은 격리된 환경에서 실행되며, 자신의 메모리 공간만 접근할 수 있습니다.
  4. 메모리 압축
    • 사용되지 않는 메모리 페이지를 압축하여 가용 메모리를 확보합니다.
  5. 앱 생명주기 관리
    • 백그라운드 상태의 앱은 제한된 메모리만 사용할 수 있으며, 필요시 시스템에 의해 종료될 수 있습니다.

힙(Heap)과 스택(Stack)의 차이점

힙(Heap)과 스택(Stack)은 프로그램의 메모리 관리에 사용되는 두 가지 주요 메모리 영역입니다.

메모리 할당 방식

  • 스택: 컴파일 시간에 크기가 결정되며, 함수 호출과 함께 자동으로 할당 및 해제됩니다.
  • 힙: 런타임에 동적으로 할당되며, 프로그래머가 직접 관리해야 합니다.

접근 속도

  • 스택: 메모리 할당이 연속적으로 이루어져 접근 속도가 빠릅니다.
  • 힙: 메모리 할당이 불연속적이어서 스택에 비해 접근 속도가 느립니다.

메모리 관리

  • 스택: 컴파일러가 자동으로 관리하여 메모리 누수 위험이 적습니다.
  • 힙: 프로그래머가 직접 할당 및 해제를 관리해야 하며, 메모리 누수의 위험이 있습니다.

크기 제한

  • 스택: 일반적으로 크기가 제한되어 있어 대용량 데이터 저장에 부적합합니다.
  • 힙: 사용 가능한 메모리 한도 내에서 크기 제한이 없어 대용량 데이터 저장에 적합합니다.

데이터 수명

  • 스택: 함수 호출이 끝나면 자동으로 메모리가 해제됩니다.
  • 힙: 프로그램 실행 중 언제든 할당 및 해제가 가능하며, 명시적으로 해제하지 않으면 프로그램 종료 시까지 유지됩니다.

사용 목적

  • 스택: 지역 변수, 함수 매개변수, 함수 호출 정보 등 임시 데이터 저장에 사용됩니다.
  • 힙: 동적으로 할당되는 객체, 큰 데이터 구조 등 장기간 유지되어야 하는 데이터에 사용됩니다.
'면접' 카테고리의 다른 글
  • [레벨 0] HTTP와 HTTPS의 차이점, 그리고 iOS에서의 보안 통신 방법에 대해 설명해주세요.
  • [레벨 0] 네트워크 프로토콜 스택과 iOS에서의 네트워크 통신 방식에 대해 설명해주세요.
  • [레벨 0] iOS의 샌드박스(Sandbox) 개념과 역할, 그리고 앱 간 데이터 공유 방법에 대해 설명해주세요.
  • [레벨 0] 메모리 관리 기법 중 iOS에서 사용되는 방식과 그 특징에 대해 설명해주세요.
GwanSon
GwanSon
버그는 도전, 코드는 해결. 열정있는 개발을 하자.
  • GwanSon
    관슨의 개발일지
    GwanSon
  • 전체
    오늘
    어제
    • 분류 전체보기 (57)
      • iOS (3)
      • swift (16)
      • UIKit (0)
      • swiftUI (2)
      • 알고리즘 (8)
      • CS (8)
      • 면접 (11)
      • Flutter (4)
      • 회고 (2)
      • 잡담 (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Firebase
    부스트캠프 10기
    FirebaseAuth
    네이버 부스트캠프
    모듈화
    2025 토스 Next
    fatal error
    tuist
    ios
    토스
    챌린지
    네이버 부스트캠프 후기
    후기
    부스트캠프
    Swift
    boj
    백준
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
GwanSon
[레벨 0] iOS에서의 메모리 구조와 관리 방식에 대해 자세히 설명해주세요.
상단으로

티스토리툴바