2

私はAndroidアプリケーションで作業していて、メモリの問題が発生しています。アクティビティで宣言されたプライベートおよびパブリックの静的変数がたくさんあります。

nullアクティビティIDが終了したときに、これらのプライベートオブジェクトとパブリックオブジェクトがクリアされた(メモリ)か、またはでnullに割り当てることによって手動で作成する必要があるかどうかを知りたいですonDestroy()。これは正しい方法ですか、それとも別の方法をアドバイスしてください。また、すべてのでガベージコレクタを手動で呼び出しますonDestroy()。System.gcを手動で呼び出すのは正しい方法ですか?

私を助けてください。

4

2 に答える 2

1

原則として、ガベージコレクションを強制する(システムに残す)ことはお勧めできません。仮想メモリの影響を無視すると、再利用するガベージがたくさんある場合にガベージコレクションが最も効率的に機能します。つまり、アロケータがすぐに使用できる空きメモリを使い果たしたとき。それ以外のときにガベージコレクターを強制的に実行すると、(平均して)収集に多くの時間がかかります。

system.gc()を呼び出して暗黙的にガベージコレクションを行うことができますが、Javaのガベージコレクターは非決定的です。したがって、すべてのメモリが即座に解放されるとは限りません。

参照。リンク>>リンク

于 2012-07-11T05:19:29.417 に答える
0
  1. オブジェクトに参照がない場合はいつでも、nullとして宣言できます。

    1. adbシェル内でdumpsysmeminfo(pid)コマンドを使用して、メモリ情報を確認できます。

    2. 手動でgcを計算すると、ガベージコレクションの保証は得られません。

于 2012-07-11T05:19:14.213 に答える