OOM이란 무엇인가요?

OOM이란?

사용자에게 보이는 앱의 비정상 종료는 대부분 예외 발생에 따른 Crash가 그 원인이지만, 기타 주요 원인으로는 Out Of Memory(OOM)를 들 수 있습니다. 애플리케이션이 대량의 메모리를 이용하여 시스템 메모리가 부족해지면, OS에 따라 해당 앱은 강제로 종료됩니다. 일반적으로 사용자에게 보이지 않는(백그라운드 또는 작동하지 않는) 앱이 우선 종료되지만, 앱이 표시되고 있는 상태에서도 대량의 메모리를 소모하여 시스템 메모리가 부족해지면 OS에 의해 강제로 종료됩니다. 이러한 경우의 비정상 종료는 OOM에 의한 종료로 SmartBeat에서 발생 건수를 확인할 수 있습니다.

 

어떻게 OOM을 검출하나요?

OOM에 의해 앱이 종료되는 경우, 앱 프로세스 내부에서 이벤트를 취득할 수 없으며, 앱 프로세스 외부에서 강제로 종료되기 때문에 정확하게 OOM을 검출할 수 없습니다. 또한, 앱이 표시된 상태에서 프로세스가 종료되는 것은 일반적으로 비정상 종료로서, 그 중에 OOM에 의한 종료도 포함됩니다.

따라서, 앱이 표시되는 동안 프로세스가 종료된 경우, 다음과 같은 절차에 따라 종료 원인을 판정하고, 다음에 실행될 때 OOM 발생을 알립니다.

AbortCheckDiagram.svg

 

주석
※Java의 OutOfMemoryError는 예외/Crash로 판정됩니다
※다음의 경우도 OOM 판정에 포함될 가능성이 있습니다.
 ・xcode 등의 디버거에서 강제 종료한 경우로, 앱 버전 업이 되지 않은 경우
 ・행업 검출 등 OOM 이외의 원인으로 OS에서 강제로 종료된 경우
 ・앱 표시 중에 강제적으로 기기의 전원이 OFF가 된 경우
*본 기능은 이하의 SDK 버전을 이용할 경우에만 유효합니다
  - iOS SDK : 1.23이상
  - Android SDK : 1.20이상
  - Unity SDK : 1.14이상
  - Unreal Engine SDK : 1.1이상
  - Cordova SDK : 1.1.0이상
 
참고
Memory Usage Performance Guidelines(apple) 
Memory Monitor(android)

 



도움이 되었습니까?
0명 중 0명이 도움이 되었다고 했습니다.
또 다른 질문이 있으십니까? 문의 등록
Zendesk 제공