Skip to content

ARC(Automatic Reference Count) #70

Closed
@MoSonLee

Description

@MoSonLee

ARC

  • 우선 ARC를 살펴보기전에�Swift의 메모리 관리를 알아보자
  • Code, Data, Heap, Stack으로 이러우져 있음
  • 이중에 Heap만 직접 관리해줘야하는 영역이고 나머지는 메모리를 관리할 필요가 없음
  • Heap는 RC(참조 횟수)를 가지고 판단을 함
    • ex) 인스턴스 생성 -> RC + 1, 인스턴스 해제 RC - 1
    • 0이 되는 시점에서 메모리에서 데이터를 삭제해줌

  • 메모리 영영죽 Heap은 클래스의 인스턴스, 클로저 등을 저장
  • Heap에 저장되는 메모리는 직접 할당하고 해제 할 수 있음
  • ARC는 인스턴스를 참조하는 RC(Reference Count)를 증가, 해제 될 때 감소 시킴.

  • 더 이상 해당 인스턴스가 필요 없다고 판단되면 자동으로 메모리에서 해제시킴
  • 대부분의 경우에선 ARC가 알아서 메모리를 관리해줌
  • 그러나 인스턴스가 서로를 참조하는 상황에 대해서는 Strong Reference Cycle이 발생할 수 있음
    • 따라서 Memory Leak가 발생하지 않도록 처리해주어야함
    • 일반적으로 인스턴스가 생성될 때 참조 횟수가 늘어남
    • nil을 통해 해제할 때 메모리에서 참조횟수가 0 -> deinit 될때 참조 횟수가 줄어듦

  • Objectvie C는 ARC가 나오기 전까진 MRC를 사용해서 관리를 해줬음

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions