OOMとはなんですか?

OOMとは

ユーザから見える、アプリの異常終了の要因の多くは、例外発生を要因としたクラッシュと考えられますが、その他の主な要因としては、Out Of Memory(OOM)が考えられます。アプリケーションが大量のメモリーを利用し、システムのメモリが足りなくなって来た場合、OSによりそのアプリケーションは強制的に終了させられます。通常は、ユーザから見えない(バックグラウンドや動作していない)アプリケーションが優先的に終了させられますが、アプリケーションが表示中の状態でも大量にメモリーを消費し、システムのメモリーが足りなくなって来た場合、OSにより強制的に終了させられます。このようなケースの異常終了をOOMによる終了として、SmartBeatで発生数を確認していただくことが出来ます。

 

どのようにOOMを検出するか?

OOMによりアプリが終了する場合、アプリのプロセス内部でイベントを取得することはできず、アプリのプロセス外部から強制的に終了させられてしまうため、正確にOOMを検出することはできません。また、アプリが表示中の状態でプロセスが終了することは、一般的には異常終了となり、その中にOOMによる終了も含まれます。
そのため、アプリが表示中にプロセス終了した場合、以下のフローに従い、終了要因を判定し、次回起動時にOOMの発生を通知します。

AbortCheckDiagram.svg

 

注記
※JavaのOutOfMemoryErrorは例外/クラッシュとして判定されます
※以下のケースも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人がこの記事が役に立ったと言っています
他にご質問がございましたら、リクエストを送信してください
Powered by Zendesk