之前有沒有什麼辦法讓GC.Collect的()被調用拋出一個OutOfMemoryException過嗎?調用GC.Collect拋出OutOfMemoryException異常
我想我正在尋找一種方式,它做了下面的代碼流:
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 2011-01-14 06:02:23
@Simon true,通常會拋出OutOfMemoryException,這是因爲垃圾收集器無法爲您的實例回收內存,這意味着靜態引用或其他類型的內存泄漏。由於靜態引用,Class Loader特別泄漏。 – dvhh 2011-01-14 06:15:37