私は「Joshua Bloch による効果的な Java プログラミング」を読んでいました。この本では、実行が保証されていないため、「ファイナライズ」ブロックを使用しないようにアドバイスしています。詳細に?
3 に答える
1
andrewmu によって言及されたもの以外に、ファイナライザーに関する別の問題は、頻繁に作成/破棄されるオブジェクトに関連しています。
作成/破棄率が高いクラスのファイナライザーを定義すると、ファイナライザー スレッドに負荷がかかり、これらのオブジェクトのガベージ コレクション率が低下する可能性があります。これらのオブジェクトは、GC の実行時にすぐに解放されるのではなく、最初にファイナライズされるまでファイナライザー スレッド キューで待機します。これにより、メモリ不足エラーのリスクが高まります。
于 2010-08-05T11:07:16.613 に答える
1
finalize の 1 つの問題は、プログラムが呼び出しても呼び出されないことです。System.exit()
これに対処するには、Josh Block がRuntime.addShutdownHook()
代わりに使用することをお勧めします。
于 2010-08-05T10:30:57.250 に答える
0
プラス: super.finalize()を呼び出すのを忘れた場合、バグである可能性があります。そのため、 finalize() の実装はエラーが発生しやすいです。
于 2010-08-21T16:36:43.187 に答える