2013-06-27 152 views
0

当堆栈框架阻止垃圾回收垃圾收集 在vb.net中该怎么办。vb.net垃圾回收

详细信息: 我创建了一个窗体并调用另一个表单来显示窗体。当第二个窗体显示第一个窗体关闭并处理完毕时,但第一个窗体并没有被垃圾收集。堆栈框架阻止垃圾收集我应该怎么做

+1

堆栈帧,在其本身,不应阻止一个对象被GCed,只要你在发布模式下运行,并且所有等待发生的事情(当该帧返回时)都是为了立即返回该方法。你是怎么确定这是保持表单对象的根源? –

+0

我不完全确定什么是发布模式...但即时通讯运行的exe ...根路径似乎堆栈框架> application.threadcontext> form1 .........即使我处理或关闭表单它不会被垃圾回收 –

+0

我用.net内存分析器对其进行了测试 –

回答

0

垃圾回收器收集任何无法访问的东西。因此,请确保您的代码都不能达到第一种形式,并且最终会收集。处理与C的免费()不同。你可以摆脱在堆栈帧的引用,不能关闭的

一种方式是设定基准为Nothing:

form1.Close() 
form1 = Nothing