我定义如下一类的一些全局变量: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