1

ガベージ コレクターと Object.finalize() について質問があります。finalize メソッドを実装するクラスを作成しました。アプリを実行して DDMS で強制的に GC を実行すると、参照が残っていないクラスのオブジェクトで finalize が呼び出されます。しかし、アプリ内で System.gc() を呼び出すと、 finalize は呼び出されません。アプリを終了するときに System.exit(0) を呼び出しても、ファイナライズは発生しません。finalize が呼び出されないのはなぜですか?

4

1 に答える 1

1

しかし、アプリ内で System.gc() を呼び出すと、 finalize は呼び出されません。

これは、オブジェクトがガベージ コレクションされていないためです。完全なGCgc()を実行しません。代わりに、ガベージを収集してから返します。

アプリを終了するときに System.exit(0) を呼び出しても、ファイナライズは発生しません。

これは、プロセスが終了しているためです。ファイナライザーは、プロセスの終了時に実行されません。そして、ラグナンダンが指摘したように、電話しないでくださいSystem.exit(0)

于 2013-09-29T12:10:16.087 に答える