【发布时间】:2012-08-03 18:47:19
【问题描述】:
我有一个关于垃圾回收的问题,当一个对象似乎超出范围但由于其他类仍然持有对它的引用时可能仍然存活。请仔细阅读下面的代码。谢谢。
Public Class MainForm
Private Sub Work
Dim Obj1 as New DataTable
Dim Obj2 as New DataTable
Helper.TestMethod1(Obj1)
Helper.TestMethod2(Obj2)
End Sub
End Class
Public Class Helper
Private Shared Obj1Reference as Object
Public Shared Sub TestMethod1 (ByVal obj1Ref as Object)
Obj1Reference = obj1Ref
End Sub
Public Shared Sub TestMethod2 (ByVal obj2Ref as Object)
'Do Something with obj2Ref
End Sub
End Class
在 Work 方法退出后,是否将 Obj1 和 Obj2 都放入垃圾回收队列中。据我了解,Obj2 已放入队列,但 Obj1 未放入队列,因为静态帮助程序类持有对 Obj1 的引用。如果我错了,请纠正我。
【问题讨论】: