日期:2014-05-19  浏览次数:20439 次

关于WinForm窗体内存释放造成dotNet崩溃的问题,请各位高人指点迷津。
小弟现在在用.Net开发WinForm+WebService程序,偶然发现,我开发系统内存总是向上增长,大概涨到150M左右时DotNet出现异常,崩溃。
      后来,小弟测试了一下,原因是这样的:Form窗体打开一个,内存增长一些(大概2M,窗体有些大),关闭后也增长(幅度比较小),我已经在Closed事件中写了,this.Dispose();this.Close();
      请教各位大虾能不能彻底的释放到Form所占用的内存,请指教谢谢。分不够再加。
      谢谢!!!!

------解决方案--------------------
你程序进行了哪些操作占用这么大?
加个强制回收gc.Collect();
------解决方案--------------------
不知道阿
------解决方案--------------------
如果对象有Dispose方法,那么你要调用这个方法.
关闭窗体的时候系统会调用窗体的Dispose方法来释放资源,所以你把在程序里用到的没有用Dispose方法的全局对象放到窗体的Dispose方法里调用就是了.

------解决方案--------------------
莫非有病毒??
------解决方案--------------------
给你个治标不治本的方法,释放内存的,跟最小化窗体一个效果:
声明:
[DllImport( "kernel32.dll ", SetLastError = true)]
static extern int SetProcessWorkingSetSize(IntPtr hProcess, int dwMinimumWorkingSetSize, int dwMaximumWorkingSetSize);

调用:
SetProcessWorkingSetSize(System.Diagnostics.Process.GetCurrentProcess().Handle, -1, -1);
------解决方案--------------------
没遇到过这种问题,我感觉每次给close了以后就可以了