私のアプリには、数秒ごとに作成される大きなオブジェクトがあります。私はそれでいくつかの仕事をします、そしてそれから私はもうそれを必要としません。
タスクマネージャーで、オブジェクトへの参照がなくてもRAMサイズが大きくなり、収集する必要があることがわかりました。
IDisposable
ラムを実装した後、すぐにダウンします。
どうしてこれなの?私はしませんでしGC.Collect
た。オブジェクトを解放して、GCにオブジェクトのファイナライザーを呼び出す必要がないことを伝えました。
編集:
IDisposable
オブジェクトに使用するコードは次のとおりです。
public void Dispose()
{
base.Dispose();
Dispose(true);
GC.SuppressFinalize();
}
private void Dispose(bool disposing)
{
//here i release unmanaged resources
if (disposing)
{
//here i release all managed resources
}
}
~MyObject()
{
Dispose(false);
}
私の大きなオブジェクトでは、myObject.Dispose();
もう必要なくなった後に行います。
私の質問は、どのように実装するIDisposable
か、またはGCが一般的にどのように機能するかについてではありませんでした。オブジェクトを自分で処分したり、GCに任せたりすると、どうして違いがあるのか知りたいだけです。