就简单的一个WinForm的Hello World!
表单上有一个按钮
事件代码就是弹出一个信息框
MessageBox.Show("Hello Wordl");程序编译运行后
XP下的任务管理器显示该.exe程序占了10M内存
把该程序的窗体最小化后
显示占用不足1M的内存在还原奇怪的事情出现了
任务管理器显示的不是为原先的10M而是比它更小的内存这是怎么回事啊?
为什么一开始不是占比10M更小的内存呢?为什么最小化后内存使用会缩得这么厉害呢?

解决方案 »

  1.   

    这不光是c#窗口,所有的具有窗口的应用程序都是这样,最小化为非活动窗口后,会释放一些资源。
    期望更深入的答案。
    这个问题在VC/MFC板块,可能更容易得到答案
      

  2.   

    看过一些资料,说最小化之后Windows 会释放绘制窗体的所使用的一些资源,所以使用的内存会变小,当还原之后会重新使用一些资源,所以使用的内存会变大。
    具体的原理我也说不清楚,大概是这样一个意思。
      

  3.   

    当一个Windows程序被最小化的时候,Windows内存管理器把该进程的WorkingSet减到最小(根据先进先出FIFO或者最近最少使用LRU),把大部分数据交换到pagefile里。这很容易理解:我们通常总是希望为前台的应用程序留出更多物理内存,从而具有更好的性能。当该程序从最小化恢复的时候,Windows也不会完全加载程序的所有虚存,只是加载了必要的部分。引自:http://blog.joycode.com/qqchen/posts/16434.aspx
      

  4.   

    windows vista 下没有这个现象
      

  5.   

    我测试了我的东西
    第一次开启,默认大小,11768k
    最小化820k,再恢复大小,3084kXP
    VS2005下项目debug里的exe
      

  6.   


    我就想知道
    11768k - 3084k =8684k都去那里了
    为什么恢复后不是11768k
    而是3084k