0

私の知る限り、管理されていないリソースを削除してメモリを解放するためにGCがコレクション操作を実行することを知っています。これは暗黙のクリーンアップと呼ばれます。また、「USING」キーワードを使用することで明示的なクリーニングを行うことができますが、GC がマネージド リソースを解放する方法には疑問があります。

4

1 に答える 1

2

GC がマネージド リソースをクリーンアップするために特別なことをする必要はありません。管理対象リソースへの参照がなくなった後、GC はそれをクリーンアップします。

マネージド リソースがアンマネージド リソースを所有している場合は、IDisposableインターフェイスを実装Disposeし、アンマネージド リソースを明示的にクリーンアップするメソッドを呼び出すことができます。ステートメントを使用すると、例外が発生した場合でも、コードがブロック内にusing存在する場合に自動的に Dispose を呼び出すため、このインターフェイスを非常に簡単に使用できます。using

ガベージ コレクションに関する MSDN ドキュメントを参照してください。

編集:上記のコメントに基づいています。

ファイナライザー (~MyClass() など) を定義することでオーバーライドできますObject.Finalizeが、GC によっていつ呼び出されるかはわかりません。一般に、IDisposable が推奨されます。Finalizer と Dispose の詳細については、こちらをご覧ください。

于 2012-06-15T07:06:17.473 に答える