2

カスタムオブジェクトのリストで「removeall」を頻繁に使用する、セットアップしているアプリケーションでメモリの問題が発生しています。この関数を実行して混乱をクリーンアップする前に、削除する各オブジェクトに対して何かを行う必要がありますか?

ありがとう!

4

2 に答える 2

2

RemoveAllは、それらをコレクションから削除します。オブジェクトへの他の参照がある場合、それらは引き続き存在します。

クリーンアップが必要な管理されていないリソースを使用している可能性もあります。通常、IDisposableを実装している場合は、これらをDisposeメソッドに入れ、Finalizeメソッドに入れて、確実にクリーンアップされるようにします。

それ以外の場合、ガベージコレクタは管理対象リソースをクリーンアップします。これが引き起こす可能性のある唯一の問題(これは非常にまれです)は、ガベージコレクターが低い優先度で実行され、プロセッサが深刻に固定されている場合、メモリをクリーンアップするのに十分なサイクルが得られない可能性があることです。

于 2012-09-17T15:26:16.810 に答える
1

一般的にはありません。ガベージコレクターに作業を任せます。

オブジェクトが実装されている場合は、他の場所で使用されていないことがわかっている場合にのみ、オブジェクトIDisposableを呼び出すことができます。Dispose

リストが非常に大きい場合は、リスト自体が問題に関係している可能性があります。ビッグリストは、ラージオブジェクトヒープの断片化の一般的な原因です。その場合、リストに含まれているオブジェクトを気にする必要はありません。

記憶の問題をより詳細に説明すると、より役立つ答えが得られる可能性があります。

于 2012-09-17T15:20:12.743 に答える