2016-10-04 2 views
-1

"out of memory"エラーが発生するため、デスクトップ実行アプリケーションの自動クリーニング方法を設定します。TO C#プログラムのキャッシュメモリをクリーニングする

これを行う方法はありますか?

+1

この質問には手助けするための十分なデータが含まれていませんが、大きな変数の割り当てを解除して 'GC.Collect'を呼び出すことができます –

+0

C#でメモリが不足している場合は、利用可能なリソースより多くのリソースが必要です。ガベージコレクタは、実行準備が整うと、独自の内部ロジックによって決定されるように実行されます。ガベージコレクションをトリガーすると、長いヒットヒープにアイテムが昇格されるため、重大で意図しないパフォーマンスに影響を与えることがあります。 – LordWilmore

答えて

4

すでに「自動クリーニング方法」があります。 GC。あなたは何をすべきかを事実上決める必要はありません。ほとんどの人よりも記憶を理解します。あなたのコードがOOMを投げている場合、なぜを調査する必要があります。たとえば、あなたはオブジェクトを漏らしていますか? (静的なイベントハンドラはこれに対して悪名高い)。連続したメモリ(巨大な配列など)の巨大なスラブを求めていますか? 2 GiB以上の配列を要求していますか?あなたは32ビットで動作していて、たくさんのメモリを使用していますか?実際には実際にはOOM条件ではありませんが、実際にGDI +は疲労を処理します(これは同じ方法で実証されます)。

最初にチェックするのは、プロセスが使用しているメモリの量と、OOMをスローしたときのOSの持つ空きメモリの量です。空きメモリが十分にある場合は、実際にはOOMではありません(32ビットシステムで1 GiB以上を使用している場合を除き、すべてのベットはオフです)。

関連する問題