아래 코드는 ClassA와 ClassB가 서로를 순환하여 참조하는 상황이다
순환참조는 메모리누수가 발생하는 대표적인 상황으로, 버튼 클릭 시 작동되도록 연출했다
엑스코드 상단 Product → Profile 클릭 시 빌드가 진행되며
독에 Xcode Instruments가 나타나게 된다
상단에 Leaks 부분이 메모리 누수 발생을 알 수 있는 부분이다
앱이 실행된 시간별로 메모리 누수가 발생하는지 확인이 가능하며
초록색 체크는 아직 발생하지 않았다는 의미이다
버튼 클릭 시 아래와 같이 빨간색 엑스 표시가 나타나게 되며
메모리 누수가 발생한 원인을 아래에서 확인할 수 있다 (ClassA, ClassB)
Leaks 에서 Cycles&Roots 로 변경하면 아래 사진과 같이 서로를 순환참조하는 상황을 확인할 수 있다
우측에 Stack Trace도 확인할 수 있는데 Stack Trace란 스택을 추적한다는 의미이다
코드를 실행하면 스택이 쌓이면서 코드를 수행하게 되는데, 이를 콜 스택이라고 부른다
이 스택을 뒤돌아보며 코드가 수행된 기록을 훑어보는 것을 스택 트레이스라고 한다
Call Tree로 전환 시 자세하게 확인이 가능하고 하단 버튼 클릭 시 훨씬 더 파악하기 쉬운 형태로 바뀌게 된다
해당 페이지에서 Reveal in Xcode 클릭 시 메모리릭이 발생하는 코드로 이동한다
'🍎 Swift > iOS 학습 노트' 카테고리의 다른 글
[강의노트👩🏻💻] 델리게이트 패턴 (Delegate) (0) | 2024.08.02 |
---|---|
[강의노트👩🏻💻] 프로세스와 스레드 / 동기 비동기 / Dispatch Queue (0) | 2024.08.01 |
[강의노트👩🏻💻] URLSession (0) | 2024.07.30 |
[강의노트👩🏻💻] URL의 구조 (0) | 2024.07.30 |
[강의노트👩🏻💻] API(Application Programming Interface) (0) | 2024.07.30 |