タグ

finalizerとjavaに関するkiyo_hikoのブックマーク (1)

  • MET12-J. ファイナライザは使わない

    ガベージコレクタはオブジェクトが到達不能であると判断してから、そのメモリ領域を回収するまでの間に、オブジェクトのファイナライザメソッドを呼び出す。ファイナライザメソッドを実行することで、ストリーム、ファイル、ネットワーク接続といった、ガベージコレクタの通常動作では自動的に解放されないかもしれないリソースを解放することができる。 ファイナライザには様々な問題が存在するため、例外的場合にのみ使うべきである。以下にそれらの問題を挙げる。 ファイナライザが実行されるタイミングはJVMに依存するので、決まった時に実行されなくてもよい。ファイナライズメソッドの動作について唯一保証されているのは、オブジェクトが到達不能になってから(ガベージコレクションの最初のサイクルで検出)、ガベージコレクタがそのメモリ領域を回収する(ガベージコレクションの2度目のサイクル)までの間に実行されるということだけである。フ

    MET12-J. ファイナライザは使わない
  • 1