Closed
Description
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
Labels
No labels