OutOfMemoryExceptionをスローする前にGC.Collect()を呼び出す方法はありますか?OutOfMemoryExceptionをスローする前にGC.Collectを呼び出す
私はそれが次のコードの流れを行うための方法を探していたとします
Try to Allocate Memory
On Pass Return
Call GC.Collect()
Try to Allocate Memory
On Fail Throw New OutOfMemoryException()
私はキャッシュの実装を書いているし、現在、私はそれを解決すべく、現在のメモリの例外に実行していますよ私が使用しています:
If GC.GetTotalMemory(False) >= cache.CacheMemoryLimit + (100 * 1024 * 1024) Then
// When Total Memory exceeds CacheMemoryLimit + 100MB
GC.Collect()
End If
新しいオブジェクトを作成するときにメモリが不足していると、実行時にすでにガベージコレクションが実行されていると思います。 – sisve
@Simon true、通常はOutOfMemoryExceptionがスローされます。ガベージコレクタが静的参照や他の種類のメモリリークを意味するインスタンスのメモリを再利用できない場合があります。クラスローダーは、静的な参照のために特にかなり漏洩します。 – dvhh