我定義如下一類的一些全局變量:vb.net爲什麼在表單關閉後,類成員仍然佔用內存?
Private Class MyClass
Private var1 as Decimal
Private list1 as List(Of string)
Private list2 as List(Of string)
....'Subs here
End Class
但是我發現,這種形式被關閉後,上述所有變量var1,列表1,列表2仍然存在於內存中。我認爲他們應該由gc收集,因爲表格已經按我確認的方式處理了。
添加:我在表格關閉後半小時內進行了監控。但這些變量不是由gc收集的。我使用上述變量的表單上有一個自動更新過程。由於上述變量仍然保持值,所以始終調用自動更新過程,從而導致異常。 (一個快速的解決辦法是檢查是否form.isDisposed在更新過程。但我不認爲這是elegeant。此外,這些變量佔用內存。)
感謝
處置並不意味着會立即GC'ed並從內存中刪除。 – vcsjones 2012-03-23 16:22:20
垃圾收集並不總是立即發生,所以事情可能會一直存在,直到GC運行。如果這些變量未在其他地方引用,則可能會標記並在下一次運行中清除。 – 2012-03-23 16:24:38
推薦閱讀:[每個人都認爲垃圾收集是錯誤的](http://blogs.msdn.com/b/oldnewthing/archive/2010/08/09/10047586.aspx)。 – delnan 2012-03-23 16:29:48