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가 된 경우
* OOM detection feature is enabled on following SDKs
  - iOS SDK : 1.23 and up
  - Android SDK : 1.20 and up
  - Unity SDK : 1.14 and up
  - Unreal Engine SDK : 1.1 and up
  - Cordova SDK : 1.1.0 and up
 
참고
Memory Usage Performance Guidelines(apple) 
Memory Monitor(android)

 



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