小弟现在在用.Net开发WinForm+WebService程序,偶然发现,我开发系统内存总是向上增长,大概涨到150M左右时DotNet出现异常,崩溃。
后来,小弟测试了一下,原因是这样的:Form窗体打开一个,内存增长一些(大概2M,窗体有些大),关闭后也增长(幅度比较小),我已经在Closed事件中写了,this.Dispose();this.Close();
请教各位大虾能不能彻底的释放到Form所占用的内存,请指教谢谢。分不够再加。
谢谢!!!!
后来,小弟测试了一下,原因是这样的:Form窗体打开一个,内存增长一些(大概2M,窗体有些大),关闭后也增长(幅度比较小),我已经在Closed事件中写了,this.Dispose();this.Close();
请教各位大虾能不能彻底的释放到Form所占用的内存,请指教谢谢。分不够再加。
谢谢!!!!
解决方案 »
- Response.Write("<table>")位置问题
- 打印大括号旋转问题(急)
- 在客户端用脚本对TextBox的style.width赋值,如何在回发后保持宽度不变?
- asp.ne2.0t的页面可以提供编译版本吗
- 后台如何控制前台select的选中项
- 从datagrid1中获得选中行的某个值
- 水晶报表的高手来看看?
- 水晶报表10的问题[请高人指点]
- 1个DataGrid能否绑定两个DataSet,1个Dataset是查询结果,另一个是查询结果的统计,分别用两SQL生成。
- DataGrid问题:实行搜索或删除后不能刷新
- http://www.baidu.com/s?tn=sitehao123&cl=3&rn=10&ct=0&lm=0&word=textbox.text
- 无法连接本机SQL SERVER数据库,但其他机器能联
加个强制回收gc.Collect();
首先感谢各位的解答。我也使用了gc.Collect();可是效果根本就不明显。
期待各位大虾。
没有使用其它的线程,我也是偶然发现的,后来我用Delphi测试了一下,Delphi也有同样的问题,但是如果在Delphi中使用了FreeAndNil()后,窗体所占用的内存是可以被回收掉的,为什么dotNet不可以呢?不解。您可以做一个简单的程序,测试一下。再次感谢。
我的程序是托管的,可是我的程序内存如果不管它会一直涨,直到崩溃为止,我的意思是调用一个窗体他就涨一次,在调用同样的窗体他还是涨,怎么做才能回收掉关闭窗体的内存呢?
关闭窗体的时候系统会调用窗体的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);
谢谢,再请教一个问题,你们如何处理dotnet的内存释放?
方法效果很明显,为什么你说“治标不治本”?
函数原型:
BOOL SetProcessWorkingSetSize(
HANDLE hProcess,
SIZE_T dwMinimumWorkingSetSize,
SIZE_T dwMaximumWorkingSetSize
);