Android のメモリ

以下のページでは、アプリのメモリ使用量を改善する方法について説明します。

メモリに関する一般的なガイダンス

メモリの概要
Android のコアメモリ アーキテクチャ、RAM の制約、ローメモリ キラー(LMK)を使用してオペレーティング システムがプロセスをバランスさせる方法について説明します。
メモリ管理
コンポーネントのライフサイクル全体でリソースを解放し、リークを回避し、プロセス状態間の移行時にメモリを管理するためのデベロッパーのベスト プラクティスについて説明します。
Android のメモリについてとトラブルシューティング
Android のメモリ アーキテクチャ、分析に利用できるツール、メモリ関連の問題の特定と解決に役立つ実践的な演習の包括的な概要を提供します。

エリア固有の最適化

ゲームのメモリの概要
ゲームエンジンを使用するアプリ向けに、メモリ バジェット、ネイティブ割り当ての処理、グラフィック アセットの管理に関するガイダンスの詳細を説明します。
ビットマップ画像の最適化
画像ライブラリ内でビットマップ アセットのサイズ設定、デコード、キャッシュ保存を効率的に行う方法を示します。
WebView のメモリを管理、診断する
WebView のマルチプロセス メモリモデルについて説明し、リークを防ぐためにライフサイクルを適切に管理する方法を説明し、メモリの問題を診断するための実用的なワークフローを提供します。
R8 コードの最適化
R8 を活用して APK サイズ、メタデータのオーバーヘッド、ランタイム メモリ使用量を削減する方法について説明します。

ローカル メモリのデバッグツール

Android Studio ツール
IDE 内で直接、リアルタイムのヒープ検査、メモリ割り当ての追跡、リーク検出のワークフローを提供します。
Perfetto ヒープダンプ エクスプローラ
ネイティブと Java/Kotlin のヒープダンプを詳細に視覚的に分析し、保持されたオブジェクト ツリーと匿名のメモリ割り当てを分離します。
デバイス上でシステム トレースをキャプチャする
アプリ内のパフォーマンス関連のバグに対処するために、デバイスのシステムレベルのトレースを記録する方法を示します。
Android でのメモリ使用量のデバッグ
Linux のメモリ管理を理解し、dumpsys meminfo、Perfetto、ネイティブ ヒープ プロファイル、ヒープダンプなどのツールを使用してメモリ使用量を追跡し、リークを特定する方法を説明します。

本番環境レベルのメモリツール

Android Vitals: メモリ使用量(匿名 RSS + スワップ)
Android Vitals では、アプリのプロダクション メモリ使用量が、フォアグラウンド、フォアグラウンド サービス、バックグラウンド サービスというプロセス状態別に表示されます。
Android Vitals: ビットマップ メモリ使用量
Android Vitals は、Android デバイスからデータを集計して、アプリのビットマップ メモリ使用量に関する指標を提供します
Android Vitals: DEX コードの最適化
Android Vitals は、アプリの DEX コードの最適化レベルが低い場合にアラートを発します。これには、R8 を使用するアプリやゲームの難読化、圧縮、最適化が含まれます。
Crashlytics
診断コンテキストで本番環境のメモリ不足(OOM)例外とメモリ リミッターの強制終了を検出し、フィールド クラッシュの優先順位付けと修正を行います。
ProfilingManager
アプリがライブ ユーザー セッションから本番環境のヒープダンプとヒープ プロファイルをプログラムで収集してアップロードできるようにする高度な API。

参考情報

ブログ投稿

動画

メモリ効率の高い Android アプリを設計する