私のアプリには、数秒ごとに作成される大きなオブジェクトがあります。私はそれでいくつかの仕事をします、そしてそれから私はもうそれを必要としません。
タスクマネージャーで、オブジェクトへの参照がなくても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に任せたりすると、どうして違いがあるのか知りたいだけです。