ページの先頭行へ戻る
Interstage Application Server/Interstage Web Server 使用上の注意
Interstage

2.12.5 java.lang.Object.finalize()についての注意事項

オブジェクトがfinalize()をオーバーライドした場合、次の問題点があります。

次の処理により、finalize()が実行され、かつ、オブジェクトが回収されるような記事を見かけることがありますが、確実ではありません。

java.lang.System.gc();
java.lang.System.runFinalization();
java.lang.System.gc();

このため、原則としてJavaプログラムでは、java.lang.Object.finalize()をオーバーライドしないでください。


GC実行時にfinalize()が必ず呼ばれることを期待して、finalize()をオーバーライドして、終了処理を定義した事例があります。しかし、実際は、finalize()が期待通りのタイミングで実行されなかったため、終了処理が実行されずメモリリークの原因となりました。