私はファイナライザを持つクラスを持っています。しかし、私はいつもDispose()
とDispose()
と呼んでいるので、GC.SupressFinalize(this)
が呼び出されているので、私のオブジェクトは実際には決してファイナライズキューに入れないと思います。ファイナライザは、クラスの別のユーザがDispose()
を呼び出すことを忘れてしまった場合に、バックストップとしてそこにあります。Finalizerのパフォーマンスペナルティがない場合
ファイナライザが実装されていないと、オブジェクトが決してファイナライゼーションキューに入れられなくても、パフォーマンスの低下はありますか?
私は考えていましたが、のEffective C#:Second Editionでは、「決して呼び出されなくても、ファイナライザが存在するため、タイプ。"
ファイナライザを使用したオブジェクトがまれであっても、保持されている参照に基づいてオブジェクトのGCを_lot_できません –