본문 바로가기
🍎 Swift/iOS 학습 노트

[강의노트👩🏻‍💻] Xcode Instruments로 메모리릭 잡아내기

by 솔비님 2024. 7. 30.

 

 

아래 코드는 ClassA와 ClassB가 서로를 순환하여 참조하는 상황이다

순환참조는 메모리누수가 발생하는 대표적인 상황으로, 버튼 클릭 시 작동되도록 연출했다

 

 

엑스코드 상단 Product → Profile 클릭 시 빌드가 진행되며

 

 

독에 Xcode Instruments가 나타나게 된다

 

 

상단에 Leaks 부분이 메모리 누수 발생을 알 수 있는 부분이다

 

 

앱이 실행된 시간별로 메모리 누수가 발생하는지 확인이 가능하며

초록색 체크는 아직 발생하지 않았다는 의미이다

 

 

버튼 클릭 시 아래와 같이 빨간색 엑스 표시가 나타나게 되며

메모리 누수가 발생한 원인을 아래에서 확인할 수 있다 (ClassA, ClassB)

 

 

Leaks 에서 Cycles&Roots 로 변경하면 아래 사진과 같이 서로를 순환참조하는 상황을 확인할 수 있다

 

 

우측에 Stack Trace도 확인할 수 있는데 Stack Trace란 스택을 추적한다는 의미이다

 

 

코드를 실행하면 스택이 쌓이면서 코드를 수행하게 되는데, 이를 콜 스택이라고 부른다

이 스택을 뒤돌아보며 코드가 수행된 기록을 훑어보는 것을 스택 트레이스라고 한다

 

 

Call Tree로 전환 시 자세하게 확인이 가능하고 하단 버튼 클릭 시 훨씬 더 파악하기 쉬운 형태로 바뀌게 된다

 

 

해당 페이지에서 Reveal in Xcode 클릭 시 메모리릭이 발생하는 코드로 이동한다