私のAndroidアプリは、時間の経過とともにますます多くのメモリを消費しています。ヒープ ダンプを取得し、MAT で分析しました。
そのため、アプリを終了した後 ([戻る] ボタンを使用) にアクティビティの 1 つがメモリから消去されていないようで、アプリを再起動すると、新しいインスタンスが作成されてメモリがいっぱいになります。
それらが PhantomReferences の場合、しばらくしてから、またはアプリを終了したときにメモリがクリアされないのはなぜですか? 他のアプリなどを使用してもメモリがクリアされることはありません。アプリを完全に閉じる唯一の方法は、タスクマネージャーを使用してアプリを手動で強制終了することです。
このアナーキーなメモリ消費を避けるにはどうすればよいですか?
編集:
問題が見つかりました!各アクティビティは Thread.setDefaultUncaughtExceptionHandler() を使用して CustomExceptionHandler を設定し、その CustomExceptionHandler はコンテキストへの参照を保持していました。そのため、コンテキスト参照を取り除き、onDestroy() メソッドの DefaultUncaughtExceptionHandler を「null」にしました。それはもう本当に良くなりました!