我有一個關於垃圾收集的問題,當一個對象看起來超出了範圍,但仍然可以保持活着狀態,因爲其他類仍然持有對它的引用。請查看下面的代碼。謝謝。作爲參數傳入的對象 - 垃圾回收.Net
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的引用。如果我錯了,請糾正我。
我很抱歉,編輯我的問題 – swiftgp 2012-08-03 18:50:21
所以,當你在一個對象作爲參數傳遞它並不意味着類是持有對其的引用 – swiftgp 2012-08-03 18:52:06
@ user1556110:否。該方法持有對其的引用。 – 2012-08-03 18:52:24