ホーム画面で Google 検索ウィジェットを使用すると、システム サーバー内でメモリ リークが発生することがわかりました。Google ウィジェットは、ホーム ボタンをクリックするたびに更新され、クラスcom.android.server.appwidget.AppWidgetServiceImplの複数の参照を保持しています。
メモリ分析ツールからの以下の分析レポートを確認してください。
「 dalvik.system.PathClassLoader @ 0x12c1d220 」によってロードされる「com.android.server.appwidget.AppWidgetServiceImpl 」の 1 つのインスタンスは、47,168,416 ( 65.38% ) バイトを占有します。メモリは、「 dalvik.system.PathClassLoader @ 0x12c1d220 」によってロードされた「com.android.server.appwidget.AppWidgetServiceImpl 」の 1 つのインスタンスに蓄積されます。
問題を再現する手順:
- 工場出荷時のデータリセットを行います。
- Google ログイン アカウントで setupwizard を完了します。
- インターネット接続を切断しないでください。
- 最近のタブからすべてのアプリを消去します。
- HOMEキーを押す >> 1秒待つ >> 最近のアプリキーを押す >> 1秒待つ >> HOMEキーを押す 1秒待つ
- 手順 5 を複数回 (100 回) 繰り返し、次のコマンドでシステム サーバーのヒープ メモリを観察します。
adb shell dumpsys meminfo
「Dalvik Heap」から「Heap Size」と「Heap Alloc」列の増加を観察しました
前後のヒープサイズの下を見つけます。
Google 検索アプリを無効にすると、システム サーバーのメモリ リークは観察されませんでした。
私はメモリリークの問題のデバッグが初めてです。サイドシステムサーバーでヒープサイズを食べているのは誰で、その理由は?
ありがとう