하루를살자

ARC (Automatic Reference Counter) 본문

Swift

ARC (Automatic Reference Counter)

Kai1996 2022. 8. 6. 13:31

ARC

  • ARC는 메모리 영역 중 힙 영역을 관리한다 .
  • 힙 메모리 영역은 인스턴스, 클로저 등 참조타입(reference type) 등이 자동으로 등록 된다. (왜 클로저가 reference Type 인지는 다음 포스트에서 알아보겠다.)
class Person { 
   let name: String
} 

//1
let person1 = Person(name: "Kai") 

//2
let person2 = person1

1.0 힙 영역에 Person 인스턴스 메모리 할당, person1 은 stack 영역에서 person Instance 의 메모리 주소를 pointing 하고 있다. 

2.0 person2 라는 변수가 stackMemory 에 새로 할당되는데, 똑같은 Heap Memory 의 Person Instance 를 pointing 하게 된다. 

 

person1 = nil 
person2 = nil

stackMemory 에 할당되어 있던 변수들을 nil 로 만들어 버리면 더이상 heap 영역의 person Instance 를 사용하는 변수가 없게 된다. 

이때 Swift 의 ARC 는 이름 그대로 자동으로 reference 가 참조 되는 횟수를 counting 하고 있다가

0 이 되면 자동으로 메모리 에서 해제 시켜준다. 

 

 

Comments