DOT NETのガベージコレクタはメモリリソースのみを扱うことができますか、孤立したオブジェクトが使用する他のリソースも処理できますか?ドットネットメモリの廃棄、CLRガベージコレクタは他のリソースを扱っていますか?
孤立したオブジェクトによって使用されるこれらの他のリソースを解放する方法をCLRがどのように扱うか。
DOT NETのガベージコレクタはメモリリソースのみを扱うことができますか、孤立したオブジェクトが使用する他のリソースも処理できますか?ドットネットメモリの廃棄、CLRガベージコレクタは他のリソースを扱っていますか?
孤立したオブジェクトによって使用されるこれらの他のリソースを解放する方法をCLRがどのように扱うか。
.Net GCは、マネージヒープ上に置かれたオブジェクト、つまり管理対象オブジェクトのみを管理します。これらの管理対象オブジェクトは、DB接続やファイルハンドルなどのアンマネージドオブジェクトにアクセスする可能性があります。開発者は、必要に応じてIDisposableまたはFinalizeを実装することにより、これらのリソースを解放する必要があります。それ は、そのようなそれらを使用して、管理 オブジェクトが再利用されたときに が解放されなければならないファイル ハンドルやデータベース接続などのアンマネージリソースを使用する場合
タイプはファイナライズを実装する必要があります。
MSDNは、と述べています。 の補完的でより制御可能なリソースについては、IDisposableインタフェースを参照してください。
ことはここではそのためのリンクです:http://msdn.microsoft.com/en-us/library/system.object.finalize.aspx
いいえ、Finalizeを使用してアンマネージオブジェクトをリリースする正しい方法ではありません。そのためにIDisposableインターフェイスを使用する必要があります。 – Guffa
決定的な廃棄を使用する場合は、IDisposableインターフェイスを使用します。ファイナライザがいつ呼び出されるかはわかりません – ppiotrowicz
合意。私の間違い。可能な限りIDisposableを使用することをお勧めします。 –
GCは管理対象オブジェクトのみを処理します。
すべてのアンマネージリソースを手動で対処する必要があります
IDisposable
インターフェイスを実装します。IDisposable
を実装するオブジェクトの使用が終了したら、Dispose
メソッドを呼び出すようにしてください。これは多くの場合、ブロックusing
を使用して行われます。Thanxはそのリンクを提案することができます.. – PawanS
http://msdn.microsoft.com/en-us/magazine/cc163392.aspx – ppiotrowicz
これは**必須**重複しますが、私はそれをオフに複製... –
が重複かもしれないです質問は、私が最初にここの事を試みたことができます取得しません。 CLRのメモリ管理について学ぶためにいくつかの回答とキーワードを得ました。 – PawanS