普通的一个windows Form 一编译运行就会点用7M以上的内存。当改变WindowState为Minimized时却仅占用1M多一点点的内存。哪位高手能解释一下。如何手动控制内存的释放?多谢多谢。
解决方案 »
- winform窗體間的數據傳遞
- 登陆集成域验证
- C#(winform,非Web下) 将Excel中的数据写进数据库表中
- 怎么用.NET控制计算机的关闭,重启,和开机呢(也就是说怎么用.NET控制计算机)?
- 彩信上行接收到图片,铃声等附件怎么还原?高分酬谢
- 谁能给我一个vs.net 2005正式版的下载地址啊?
- 从数据访问层中返回的SqlDataReader为何不可用?错误提示:阅读器关闭时READ的尝试无效
- 如何用一个按钮启动一个已有的.exe程序。
- 请问如何使用session来保存用户的登陆名
- 正则表达式匹配下面的这一段html文本 要怎样做?
- 关于winform程序部署的问题
- 请教C#中如何修改Excel的属性
估计是加载的东西过多,Minimized得时候小说明了这点
System.GC.Collect(2);会释放的快些。
这跟windows机制应该也有关系.
非托管程序也有这种现象,只是没有这么明显罢了.
可能是托管程序刚运行时需要额外的内存,而运行起来以后这部分内存就可以释放了.
To Hemee() 如何手动更改inactive状态?我想实现的只是把它占用的内在降的小一些。仅建一个空的Form,运行就会占用这么大的内存,总不是一件好事吧。大伙可以自己试试。不只是内存条长不长价的问题。
现在不是说有没有必要的问题。
而是为什么它会占用本不应该占用的内存???为什么刚开始的时候占用最大,最小化之后会占用很小,从最小化恢复normal后仍占用很小。如果我运行一个程序,不把它最小化,难道那些刚开始运行占用的内存它会一直占有????引用:
7m是可以理解的,.NET提供的窗体资源比较丰富,内存自然要耗得多一点;还需要有CLR再入后占用的内存(提供多个不同线程来维护应用程序)。当最小化之后,内存占用变少是windows机制,当一个程序处于inactive状态的时候,它的物理内存会被压缩,一部分数据会被缓存到硬盘,实际也就是虚拟内存。可是当一个.net程序从最小化再变为最大化时,所占内存还是那么少.
这跟windows机制应该也有关系.
非托管程序也有这种现象,只是没有这么明显罢了.
可能是托管程序刚运行时需要额外的内存,而运行起来以后这部分内存就可以释放了.