100分求助:为什么C#程序当窗口最小化内存就变小了呢?

来源:百度知道 编辑:UC知道 时间:2024/05/10 21:32:31
问题一:
一个WinForm程序,即便一个个没有任何控件的窗体,运行后也会占用10M以上的内存,可是当把窗口最小化之后内存一下子就缩小到1M左右有时候还不到1M。这时再把窗口还原回以前的状态内存又增大了,不过没有刚打开的时候那么大了也就4M左右。请问这是为什么呀?

问题二:
我如何通过代码使我的程序内存占用达到我以上说的最小化窗口时的效果呀?

最小化只是把内存交换到虚拟内存中暂未使用而已
那10m 内存大多数都是 CLR 初始化所使用的
之所以最小化还原后占用内存变少
是因为 CLR 使用的某部分内存只在初始化时使用,在程序运行时很少使用,直到需要时,虚拟内存中那一块没使用的才会被调用出来使用

很多号称占用内存少的软件也是这样的道理
实际上打开任务管理器就可以看到
一个占了几m内存的程序,居然占了几十m虚拟内存

而交换内存到虚拟内存实际上会影响程序的执行性能

你可以使用 Win32 API : SetProcessWorkingSetSize 完成设置最小内存占用的功能

.Net注重的是开发效率,既然选择了.Net就不要太在意内存,只需回收你自己创建的资源,其他的就交给.Net吧,现在的机器内存一般都很大了。