Javaではfinalize()
メソッドはjava.lang.Object
クラス内に定義されます。これは「ファイナライザー」と呼ばれ、オブジェクトがガベージ コレクションされる前に特定のクリーンアップ操作を実行するために使用されます。
finalize()
メソッドの役割:
finalize()
リソースのクリア:ファイルを閉じる、ネットワーク接続を解放するなど、オブジェクトによって保持されている一部のリソースを解放するメソッドを使用できます。リソースのリークを避けるために、オブジェクトがリサイクルされる前に、必要なリソースのクリーンアップを実行できます。- 未処理の操作を実行する:
finalize()
メソッドを使用して、未処理のタスクのキャンセルやトランザクションの返却など、一部の未処理の操作を実行できます。
finalize()
メソッドは、オブジェクトがガベージ コレクションされる前にクリーンアップ操作を実行する機会を提供しますが、これは信頼できるメカニズムではありません。注意すべき点がいくつかあります。
- メソッドに依存しすぎることはお勧めできません。ガベージ コレクションのタイミングは不定であるため、メソッドがいつ呼び出されるか
finalize()
は保証されません。finalize()
したがって、重要なリソース解放操作は、finalize() メソッドに依存するのではなく、明示的なコードを通じて実行する必要があります。 - Finalize() メソッドの実行は負荷が高くなります。
finalize()
メソッド呼び出しはガベージ コレクターによって処理され、オブジェクトが再稼働する可能性があるため、その実行によりパフォーマンスとメモリのオーバーヘッドが発生します。最新の Java バージョンでは、ステートメント ブロックを使用してリソースを自動的に閉じるなど、リソースのクリーンアップに他のメカニズムを使用することをお勧めしますtry-with-resources
。
finalize()
Java では、オブジェクトがガベージ コレクションされる前にクリーンアップ操作を実行するためにこのメソッドが使用されますが、これは強く推奨されたり信頼できるメカニズムではないため、他の手段でリソースのクリーンアップを明示的に実行することをお勧めします。