ARC란?
Swift에서의 메모리 관리 방법
객체의 참조 횟수(reference count)를 계산하여, 참조 횟수가 0이되면 메모리를 해제하는 방식
ARC에서 발생할 수 있는 문제점
서로 다른 객체들이 순환 형태로 참조하고 있는 경우 reference count가 0이 되지 않아 메모리에서 해제되지 않는 순환 참조 문제가 발생할 수 있음
순환 참조 문제 해결법
reference count를 증가시키지 않도록 weak나 unowned 키워드를 통해 해결할 수 있음
weak와 unowned의 차이점
weak는 객체가 메모리에서 내려간 경우 옵셔널 타입으로 선언되어 nil값을 가짐
unowned는 참조하는 객체가 항상 존재한다고 가정하여, 참조하는 객체가 메모리에서 해제되면 런타임 에러가 발생할 수 있음
ARC와 GC(Garbage Collection) 비교
ARC는 컴파일 시점에, GC는 런타임에 실행됨
GC는 런타임 시점에 실행되기 때문에 ARC에 비해 오버헤드가 높음
GC는 런타임에 주기적으로 메모리를 검사하여 순환 참조를 탐색하고 메모리에서 해제할 수 있어 순환 참조 문제가 발생하지 않음
'iOS' 카테고리의 다른 글
| [iOS] COW(Copy-on-Write) (0) | 2024.08.28 |
|---|---|
| [iOS] Code Base로 시작하기 (0) | 2024.08.19 |
| [iOS] Result Type으로 네트워크 통신 개선해보기 (0) | 2024.08.05 |
| [iOS] 싱글톤 패턴 (0) | 2024.07.30 |
| [iOS] Dispatch Queue (0) | 2024.07.18 |