假設我們有一個名爲SimpleButton1的單一Windows窗體。以下代碼導致無法控制的內存使用量。我做錯了什麼?.NET事件導致無法控制的內存使用情況
我的理解是,在for循環每次迭代,GC清理任何TestClass的對象,因爲有對任何事件沒有處理程序會照顧任何關聯的事件,以及
Public Class Form1
Private Sub SimpleButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SimpleButton1.Click
For i = 1 To 1000000
Dim test1 As New TestClass
Next
End Sub
End Class
Public Class TestClass
Private Event TestEvent(ByVal sender As Object)
End Class
請注意,我已嘗試實現IDisposable並在For循環的每次迭代結束時調用test1.Dispose(),但我懷疑我沒有處理正確的資源。
*解答:代碼沒有問題,並且按預期運行。問題是我在調試模式下運行它,並且創建的開銷導致大量內存使用。見下面的討論。
您是否遇到此_Exact_代碼的內存問題?因爲我無法讓它在TaskManagers內存圖中形成一點點凹凸。 –
是的 - 這個確切的代碼。沒有其他處理程序訂閱TestEvent或其他任何創建TestClass實例的處理程序。只需一個簡單的按鈕,即可實現Dim TestClass一百萬次。 – stacked
嗯 - 不可重現。請重新測試。 –