8

Android にはシングルトン クラスがありますが、ガベージ コレクターがそれを解放できるかどうかはわかりません。

ガベージ コレクターがシングルトン クラスの割り当てを解除する場合、割り当て解除を回避するにはどうすればよいですか?

4

3 に答える 3

3

ガベージ コレクションは、参照が静的でない限り、何も指されていないオブジェクトを収集します。静的フィールドはガベージ コレクション用に開いていますか?

于 2013-03-02T16:10:19.087 に答える
2

シングルトンを実装する方法はたくさんあります。最高のものの1つは次のとおりです。

public static enum My { SINGLETON; }

何かがシングルトンであるかどうかは、それが GC されているかどうかには関係ありません。強い参照がない場合、オブジェクトは GC されます。調べてください ( http://weblogs.java.net/blog/2006/05/04/understanding-weak-references )。

興味深い問題がもう 1 つあります。Android では、アプリケーションはそのライフサイクルを制御しません。予期しない方法でプロセスが終了し、再作成される可能性があります。その場合、静的最終変数は再初期化されます。詳細はこちら:

http://portabledroid.wordpress.com/2012/05/04/singletons-in-android/

于 2013-03-02T16:37:07.670 に答える
1

gc がインスタンスの割り当てを解除する唯一の理由は、アプリ全体が破棄された場合です...

于 2013-03-02T16:08:56.607 に答える