본문 바로가기
iOS

iOS - 메모리 관리 ARC

by minsol Kim 2024. 7. 30.

ARC 란 ? 

참조된 횟수를 추적해 더이상 참조되지 않는 인스턴스를 메모리에서 해제해 주는 것이다. 

ARC는 특정 클래스 객체를 참조하는 변수, 상수, 프로퍼티들의 갯수를 카운팅한다.

- 참조 메모리 관리를 자동으로 해주는 기능을 뜻한다.

- 인스턴스가 참조되거나 참조해제될 때 횟수를 카운팅하고, 횟수가 0이 되면 인스턴스를 메모리에서 해제하는 방식으로 수행된다. 

Heap 은 class,closure 등의 참조형 자료들이 머무르는 공간, 개발자가 동적으로 할당하는 메모리 공간 -> 관리 필요

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

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

특정 객체에 "적어도" 하나라도 참조변수가 존재한다면 ARC에서는 메모리 해제를 발생하지 않는다.

반대로, 활성화된 참조변수가 존재하지 않는다면 ARC는 특정 객체를 메모리로부터 "해제"시킨다.

 

retain, release 의 호출을 통해 메모리 관리를 수행하는 것이다.

retain 

- 객체의 reference count 를 증가 시킨다.

객체가 메모리에서 해제되지 않도록 이 함수를 호출하여 카운트를 증가시킨다.

 

release

- 객체의 reference count 를 감소시킨다.

객체를 더이상 필요로 하지 않을 때 이 함수를 호출하여 카운트를 감소시키는 것이다.

class Person {
	var name: String
    init(name: String) {
    	self.name = name
    }
 }
 let prettyPerson = Person(name: "minsol")
 let prettyPerson2 = prettyPerson

 

referenceCount -> 2 인 상태이다.

 

댓글