0
我有一小段代碼,我希望在特定點的GC會擦除內存,而不是內存不足。未由GC發佈的VB.NET內存
這是GC的正確行爲嗎?
Private Sub Form1_Load()
Dim WasterWrapper as cMyClass
For MapIndex = 1 To 50
WasterWrapper = New cMyClass
Next
End Sub
這是我除去的Finalize()之後現在GC可以釋放存儲器中作爲我預期其分配內存
Public Class cMyClass
Private mArry(,) As Double
Sub New()
Dim i As Integer
Dim j As Integer
ReDim mArry(5000, 5000)
For i = 0 To 5000
For j = 0 To 5000
mArry(i, j) = Rnd() * 1000
Next
Next
End Sub
Protected Overrides Sub Finalize()
MsgBox("Finalising the wrapper")
MyBase.Finalize()
End Sub
End Class
內存不會自動釋放。 GC必須運行,它會在感覺它是必要的時候運行。我注意到你實現了finalize方法。這會在釋放之前增加所需的時間,因爲對象將在釋放之前放入最終隊列中。您可以嘗試'GC.Collect'來測試強制GC運行。但是在正常情況下使用這個請注意,這是不推薦的。 –