1

私はAndroidアプリケーションを作成していますが、私はちょうど最近、メモリ使用量を調べ始めました。メモリリークと通常のメモリ使用の区別

私のアプリはメインアクティビティと2つのフラグメントで構成されています(フラグメントAは画像とともにリサイクルビューを保持し、フラグメントBはイメージといくつかのテキストボックスを保持します)。

私がアプリを起動すると、私のメモリ割り当ては約20MBになっています。フラグメントAのリサイクルビューを上下にスクロールすることで(新しいデータをロードしないで)、ガーベジコレクションまでメモリ使用量を増加させることができます。

また、フラグメントAからフラグメントBに行き来すると、メモリ割り当てがノンストップ(ガベージコレクションまで)に増加するようにすることができます。 20 - > 23 - > 29、..など60以上になるとガベージコレクションされるまで。

私は約23MBの割り当てでアプリケーションを起動し、いくつかのスクロールとフラグメント間の移動を行った場合、私のメモリ使用量は40〜60MBの間である可能性があります。

Android Studioを使用して複数回連続してガベージコレクションを行うと、私はそれを元に戻すことはできますが、23まで(通常は30日まで)に戻すことはできません。

私は始めたメモリの100%をガベージコレクションできないので、これはメモリリークですか?

答えて

0

いいえ、ガベージコレクションされているため、厳密に言えば、Javaではそのような種類のメモリリークはありません。

あなたがもはや使用していないもの(I.E.大きなリストや決して削除しないもの)への参照を保持している場合は、javaで「リーク」が発生します。しかし、これらは、あなたが覚えておく必要のないもの(リスト/セット/マップからのものの削除、ファイルのクローズなど)を確実に破棄することによって、常に修正できることに留意してください。あなたが見ている永続メモリは、クラスにバインドされているため、おそらくいくつかの静的変数からのものです。

関連する問題