React Native 로 면접지문을 읽고 면접을 촬영한 후 업로드하는 기능을
서비스하는 애플리케이션을 개발했다.
"면접지문을 읽을 때 0.01% 의 사용자가 면접지문을 읽는 중 앱이 종료된다는 리포트를 받았다."
주어진 지문 읽는 시간을 카운트하는 기능이기 때문에
초단위로 리랜더링되고 있어 랜더링 최적화 문제도 의심할 수 있지만
앱이 갑자기 종료되는 앱크래시 현상이라 무엇보다 메모리 문제라 가정하였고
프로파일링을 돌려봤다.
# 면접지문 읽는 상황 프로파일링 결과
- 지속적으로 GC(Garbage Collector)가 메모리를 회수하고 있다.(조밀한 휴지통 표시)
- 메모리 사용량이 줄지 않는다.
- 실행환경, 기기환경, 사용환경에 따라 GC가 오작동하거나 GC 회수량을 초과할 경우 앱크래시가 나타날 것으로 추정.
면접지문을 읽는 상황에서 프로그램은
사용자의 모습을 불투명하게 보여주면서 지문 숙지 시간 카운트를 진하게 보여준다.
지문숙지시 사용자는 고개를 숙이고 지문을 읽고 있기 때문에
자신의 모습을 보여주는 기능(카메라 오픈)을 빼는 것으로 결정했다.
# 면접지문 읽는 상황[카메라 오프] 프로파일링 결과
- GC가 전혀 활동하지 않을 정도로 메모리 사용이 안정적으로 변화된 것을 볼 수 있다.
해당 이슈는 위의 방법과 랜더링 최적화 작업을 통해 처리하고 종료되었다.
🤷♂️카메라를 오픈할 때 메모리를 많이 사용했던 이유가 뭘까?
카메라를 사용하는 모든 화면을 살펴봤고 이유를 알 수 있었다.
# QR스캔 상황
# 얼굴인식 상황
# 녹화 상황
기본적인 카메라사용은 메모리 사용이 안정적이다.
그러나 QR스캔, 얼굴인식, 텍스트 인식과 같이 오픈된 카메라로 들어오는 데이터에서
무언가를 처리해야 하는 경우 메모리 사용이 활발해짐을 알 수 있었다.
'Develop > Android' 카테고리의 다른 글
Targeting S+ (version 31 and above) requires that an explicit value for android:exported be defined when intent filters are present (0) | 2022.04.09 |
---|---|
[gradle] googlePlayServicesVersion 설정 방법 (0) | 2021.11.27 |
[android] MediaPlayer?? ExoPlayer?? (0) | 2021.10.05 |
[android] 실행중인 앱을 강제 종료시키고 싶을 때 (0) | 2021.09.29 |
[Android] 어떻게 안드로이드 앱 사이즈를 줄일까?🤔 (0) | 2021.09.28 |
댓글