ガベージ コレクターと Object.finalize() について質問があります。finalize メソッドを実装するクラスを作成しました。アプリを実行して DDMS で強制的に GC を実行すると、参照が残っていないクラスのオブジェクトで finalize が呼び出されます。しかし、アプリ内で System.gc() を呼び出すと、 finalize は呼び出されません。アプリを終了するときに System.exit(0) を呼び出しても、ファイナライズは発生しません。finalize が呼び出されないのはなぜですか?
2598 次
1 に答える
1
しかし、アプリ内で System.gc() を呼び出すと、 finalize は呼び出されません。
これは、オブジェクトがガベージ コレクションされていないためです。完全なGCgc()
を実行しません。代わりに、ガベージを収集してから返します。
アプリを終了するときに System.exit(0) を呼び出しても、ファイナライズは発生しません。
これは、プロセスが終了しているためです。ファイナライザーは、プロセスの終了時に実行されません。そして、ラグナンダンが指摘したように、電話しないでくださいSystem.exit(0)
。
于 2013-09-29T12:10:16.087 に答える