メモリリークの可能性があります。 バックグラウンドで重労働をしているアクティビティがあります。Androidスタジオはどのようにガベージコレクタを起動し、どのように動作しますか?
一部のタスクを実行すると、アプリがあまりにも多くのメモリを消費します。それは適切にクリーンアップされないようです。
は、これがデフォルトの状態での活動です:
私が活動を行っているタスクを実行する場合、より多くのメモリが割り当てられています。いくつかの仕事の後
私は、これはGCが適切にメモリを解放することができない原因と、メモリの問題でなければならないと思いました。限り、私は知っている限り、オブジェクトに参照が残っていない場合、GCはメモリを解放することができます。あれは正しいですか?
は今私を混乱させる部分が来る:
私は、Android StudioからGCを実行する場合、メモリが正しくクリーンアップされ、私の活動が閉じれることは決してありません。私は多くのメモリが割り当てられるときにAndroid Studio GCを使用する必要があります。
これは私が意味するものです。一般的には疑問がある
:
なぜAndroidのメーカーGCが適切にメモリをクリーンアップすることができ、なぜありません自動アンドロイドGCで正常に動作しますか?
これはかなり一般的な質問です。私はちょうどガベージコレクションのようなものがあるかどうか知りたい。
System.gc();
とも呼ばれますが、メモリは正しくクリーンアップされません。
追加情報:
モトG第2世代
アンドロイド5.0.2。
"時々、アクティビティやアプリケーションが終了します。私はそれがメモリの問題によって引き起こされたと考えました。"アプリがメモリ不足になった場合、メモリ不足の例外が発生し、Logcatで明瞭に確認できます。私の勘違いはあなたのアプリが別の理由でクラッシュしていることです。クラッシュの理由を調べるには、logcatを調べてみてください。 – Shmuel
同時GCは、顕著な一時停止を引き起こさないように部分的な収集のみを行います。 Studioによってトリガされたような明示的なGCでは、完全なGCスイープが実行されます。いくつかの読書:https://source.android.com/devices/tech/dalvik/gc-debug.html – laalto
@Shmuel例外はありません。警告さえありません。 – FlanschiFox