홍로그

iOS ARC (Automatic Reference Counting) 본문

iOS

iOS ARC (Automatic Reference Counting)

성홍민 2021. 4. 18. 19:10

ARC

메모리 관리를 위해서는

Heap 영역에 참조형 자료들이 얼마나 참조되고 있는지 카운팅 하고 이에 따라 메모리를 할당 및 제거해야 한다.

ARC는 이것을 자동으로 해준다.

 

ARC는 Automatic Reference Counting으로

Compile Time에 동작하며 클래스의 새로운 인스턴스를 만들 때 ARC는 인스턴스의 정보를 저장하기 위해 메모리를 할당하고 코드를 분석해서 자동으로 적절한 위치에 retain, release 코드를 생성해 준다.

또한 reference count를 추적해 0이 되면, 즉, 인스턴스가 더 이상 사용되지 않는다고 판단하면 메모리를 해제한다.

 

GC

GC는 (Garbage Colletion)으로

프로그램 실행 중 (Run time)에 동적으로 감시하고 있다가 더 이상 사용할 필요가 없다고 여겨지는 것을 소멸(해제) 시켜 버린다.

 

ARCGC의 차이

GC는 항상 메모리를 차지하고 감시해야하기 때문에 프로그램 자체 외에 메모리 사용량이 더 늘어날 수 밖에 없으며 지속적인 감시를 위해 CPU를 일부 사용해야만 한다.

이에 비해 ARC는 수동으로 개발자가 넣을 코드를 컴파일러가 넣어 주기 때문에 오버헤드가 적고, 

이는 특히 메모리와 cpu가 데스크 탑에 비해 제한적인 모바일 기기에서 더 중요한 문제고 그만큼 성능 측면에서 이득이다.

 

 

 

반응형