제목 그대로 어느 날, QA 를 하시는 한 분이 내가 만든 기능의 리뷰를 작성하던 도중 앱이 꺼지는 것 같다고 하셨다.
이전 QA 에서 앱이 꺼졌다고 보고한 사람들이 없었는데 왜 갑자기 이런 현상이 일어난 걸까?
또한 내가 쓴 코드에 대해선 여러 번 체크를 해봤기 때문에 코드에선 100% 아무런 잘못이 없다고 나는 확신을 하고 있었다.
QA 를 하시는 분이 쓰는 핸드폰은 갤럭시이며 회사의 공용 테스트폰 iphone 7 로 테스트를 하고 있었다.
내가 테스트하는 폰들은 이런 현상이 일어나지 않았기에 QA 분에게 테스트폰을 잠시 빌려서 디버깅을 해보겠다고 부탁하였다.
그런데 테스트폰을 본 순간 문득 예전 기억이 떠올랐다.
옆에 개발하시는 분이 이 폰으로 디버깅하는데 속도가 너무 느리다고 하셨다.
그래서 나는 리뷰 사진을 등록하면서 메모리를 많이 잡아먹었던 것은 아닐까 라는 합리적인 의심이 들었다.
그래서 나는 사수분에게 이런 문제가 원인이었던 것이 아닐까요? 했고 사수분도 왠지 그런 것 같다고 하셨다.
그리곤 사수분이 xcode 로 신기한 기능을 알려주셨다.
바로 xcode 로 실시간 메모리 사용량을 분석하는 방법이다.
xcode 로 빌드하면 맨 상단 왼쪽 메뉴에서 스프레이를 클릭하면 된다.
그 중 Memory 부분을 클릭해본다.
그러면 아래처럼..
실시간으로 바로 메모리 사용량을 알 수 있었다.
그래서 아이폰 7을 디버깅해봤고 역시나 리뷰 사진을 한 장 한 장 등록할 때마다 메모리가 치솟았다.
8장때 쯤 메모리가 1기가에 도달했고 앱이 꺼져버렸다.
그리고 xcode 에선 due to memory ..? 이런 식의 팝업창이 남아있었다.
아무튼 앱의 사용량이 많으면 꺼질 수도 있구나 라고 생각한 재밌는 헤프닝이었다.
찾아보니 아이폰의 RAM 사용량은 극히 제한되어 있다고 한다.
https://woongsios.tistory.com/206
또한 메모리 제한을 넘겨버리면 아이폰은 앱을 종료시킨다고 한다.
여기 탭에서 재밌는 기능이 많았다.
나는 iOS 개발자가 아니라서 모든게 신기했고 재밌었다.
아래는 Energy Impact 를 클릭해본 결과다.
overhead 가 뭔지 궁금해서 찾아보았다.
오버헤드란 프로그램의 실행흐름에서 나타나는 현상중 하나로 예를 들어 , 프로그램의 실행흐름 도중에 동떨어진 위치의 코드를 실행시켜야 할 때 , 추가적으로 시간,메모리,자원이 사용되는 현상입니다.
한마디로 정의하자면, 오버 헤드는 특정 기능을 수행하는데 드는 간접적인 시간, 메모리 등 자원을 말한다.
예를들어, 10초 걸리는 기능이 간접적인 원인으로 20초걸린다면 오버헤드는 10초가 되는것이다.
재밌으니까 xcode 로 좀 더 분석해봐야겠다. 😄
'👩🏻💻 TIL' 카테고리의 다른 글
안드로이드 인텐트 필터 (0) | 2022.12.05 |
---|---|
안드로이드 Manifest 파일 (0) | 2022.12.05 |
xcode push notification not showing (0) | 2022.10.24 |
[iOS] [Flutter] module not found. (1) | 2022.10.18 |
only one auth mechanism allowed (0) | 2022.09.19 |