-
Xcode - Memory Leak 확인하는 방법Programming/갈 곳 잃은 친구들 2022. 2. 17. 15:47
안녕하세요 BeePeach입니다 :)
오늘은 앱에서 memory leak이 발생하고 있는지 아닌지 확인하는 방법에 대해서 공부해보려고 합니다.
Memory Leak이 발생하는 대표적인 이유는 strong reference cycle 때문에 발생하게 됩니다.
Cycle을 해결하는 방법은 적절하게 프로퍼티를 weak 또는 unowned로 설정하거나 클로저를 사용할 때 capture list를 이용해서 cycle이 발생하지 않도록 해주는 것입니다.
그런데 해결 방법은 알고 있지만 어디서 memory leak이 발생하는지 모른다면 해결할 수 없겠죠??
그래서 memory leak이 발생하고 있는지, 발생한다면 어느 부분에서 발생하는지 확인하는 방법을 알아야합니다.
Memory Leak 확인하기
1. cmd + i로 profile build 실행하기
cmd + R이 아닌 cmd + i로 빌드를 하게 되면 instrument가 실행됩니다.
여기서 여러 instrument가 있는데 Leaks를 실행해줍니다.
1-1. 만약 Instruments가 나오지 않는다면 ?!?
Xcode -> Open Developer Tool -> Instruments를 실행해줍니다.
1-2. Instrument를 선택해줍니다.
바로 Leaks를 선택해줘도 되지만 Allcations을 선택해줘도 됩니다.
1-3. Leaks가 없다면 +로 Library를 열어서 Leaks를 추가시켜줍니다.
왼쪽에 Leaks가 없다면 오른쪽 상단에 +를 누르고 Leaks를 추가해주면 됩니다.
2. Start Recoding을 눌러서 시작합니다.
3. Allocations의 Detail Filter에 앱 이름을 입력합니다.
Leaks에 filter가 아니라 Allocations에 filter에 입력해야 합니다.
Leaks는 누수가 발생하는지 안 하는지 쉽게 체크하기 위함입니다.
4. 시뮬레이터에서 앱을 동작시켜봅니다.
이제 시뮬레이터에서 앱을 이리저리 동작시켜봅니다.
만약 Leak이 발생하는 부분이 있다면 Leaks에 X 표시가 나타나게 됩니다.
그리고 Allocations의 분석창에 메모리에서 해제되지 않는 객체가 표시됩니다.
여기서 원치 않는 객체가 해제되지 않는다면 해당 객체를 구현하는 부분에서 cycle이 발생하는지 확인하고 코드를 수정해주면 됩니다!
728x90'Programming > 갈 곳 잃은 친구들' 카테고리의 다른 글
Monterey에서 Xcode 13 이전 버전 실행하기 (0) 2021.12.13