Interstage Web Server 使用上の注意 - Solaris -
目次 前ページ次ページ

第3章 注意事項> 3.10 JDK/JREの注意事項

3.10.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()が期待通りのタイミングで実行されなかったため、終了処理が実行されずメモリリークの原因となりました。

目次 前ページ次ページ

Copyright 2008 FUJITSU LIMITED