2

Androidアプリのメモリ使用量を分析しようとしています。私は未使用のアクティビティのメモリを解放することをGCが保証しています

adb shell dumpsys meminfo <package name> 

を使用すると、私のアプリは一つだけActivityを持っており、私はおそらく回のダースを次のステップを繰り返していることを実行します。

  1. は、アプリを開きます。
  2. dumpsysのダースが私のActivitiesの約1-2インスタンスがメモリに残っていることを示していることをやった後、[戻る]ボタン

を使用して終了します。私がadb dumpsysを2,3回ヒットした後には、Activityのカウントはゼロになります。これは正常ですか?それが漏れの場合、私はActivityのカウントがゼロになるとは思わない。 GCは、Activityオブジェクトのメモリがゆっくりと主張されていますか?

+0

LeakCanary https://github.com/square/leakcanaryでアプリのメモリ使用量を分析してみてください。あなたは問題をはるかに簡単に特定することができます。 –

+0

@EricBachhuberありがとうございます。私はリークカナリアを使い、漏れを取り除いた。私が今残っているのは偽陽性だけです、Leak Canaryは活動が漏れたと思って、後に「GCが怠けている」と言います。だから私はリークカナリアの賢明な私は漏れがないと思います。 – Bajji

答えて

2

これは、GCがアクティビティオブジェクトのメモリをゆっくりと要求していることを意味しますか?そのインスタンスを意味するものではありませんバックボタンを押してActivity仕上げ

すぐに殺され、メモリGC -edされます。 ActivityonDestroy()メソッドは「ファイナライザ」ではありません。新しいActivityインスタンスを起動するときに、「古い」ものがメモリにまだ残っている場合(reference)、このケースを満たすことができます。

リークの場合は、アクティビティ数がゼロになるとは思われません。

あなたはとして、それはリークではありません実行しているアプリケーションのプロセスが表示された場合「アクティビティカウントがゼロに下ります」。

adb dumpsysを2,3回ヒットした後、アクティビティ数はゼロになります。これは正常ですか?

はい、上記の理由によってです。

関連する問題