2013-06-27 184 views
0

當堆棧框架阻止垃圾回收垃圾收集 在vb.net中該怎麼辦。vb.net垃圾回收

詳細信息: 我創建了一個窗體並調用另一個表單來顯示窗體。當第二個窗體顯示第一個窗體關閉並處理完畢時,但第一個窗體並沒有被垃圾收集。堆棧框架阻止垃圾收集我應該怎麼做

+1

堆棧幀,在其本身,不應阻止一個對象被GCed,只要你在發佈模式下運行,並且所有等待發生的事情(當該幀返回時)都是爲了立即返回該方法。你是怎麼確定這是保持表單對象的根源? –

+0

我不完全確定什麼是發佈模式...但即時通訊運行的exe ...根路徑似乎堆棧框架> application.threadcontext> form1 .........即使我處理或關閉表單它不會被垃圾回收 –

+0

我用.net內存分析器對其進行了測試 –

回答

0

垃圾回收器收集任何無法訪問的東西。因此,請確保您的代碼都不能達到第一種形式,並且最終會收集。處理與C的免費()不同。你可以擺脫在堆棧幀的引用,不能關閉的

一種方式是設定基準爲Nothing:

form1.Close() 
form1 = Nothing