タグ

finalizerとresourceに関するkiyo_hikoのブックマーク (2)

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

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

    MET12-J. ファイナライザは使わない
  • 実践的なパターン: テストの容易性を高める設計

    This browser is no longer supported. Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support. CLR Inside Out Digging into IDisposable Shawn Farkas Contents Disposable Objects The Disposable Pattern Managed vs. Native Resources Managed Resource Cleanup Deriving from a Disposable Type Dispose and Security SafeHandles Conclusion One of the major pro

    実践的なパターン: テストの容易性を高める設計
    kiyo_hiko
    kiyo_hiko 2013/01/08
    IDisposable I/Fを実装しておくとusingブロック内で使ったリソースをdisposeメソッドが解放してくれるとか
  • 1