IIS引用程序池定时回收之后每次回收都会比上一次多一点(设置最多300M,能定时回收,但回收后基数慢慢变大),运行一天之后IIS就死掉了,最高达到3.7G,但是察看任务管理器所有进程的内存之和依然很小,600M左右,估计内存使用的是虚拟内存,请问有什么方法让内存彻底回收呢?
  程序是asp.net2.0的,亟盼回复帮忙:)在线等待,解决立即给分

解决方案 »

  1.   

    使用大量内存不是缺点。这个是操作系统对大物理内存进行的优化。一个用256MB的电脑开一个.NET 的没有控件,没有代码的WIN FORM程序,看看增加了多少,马上关闭又释放了多少。一个用1G的电脑情况又是什么样????如果留意多vista应该了解它,用占用物理内存的方法提高速度的新优化。
      

  2.   

    估计内存使用的是虚拟内存
    ---------------
    虚拟内存占用的是硬盘上的空间,你这个观点严重错误
    运行一天之后IIS就死掉了,最高达到3.7G
    ---------------------------------------
    只能说ASPX程序写得不好,没有及时释放所占用的内存。
    首先应该检查你的程序,特别是有关数据库处理部分
      

  3.   

    你的网站有问题,有很多东西使用后没有释放。然后解释基础性问题。很多人常说的硬盘里的虚拟内存,实际上是指页面文件,而真正的虚拟内存是由物理内存和页面文件组成。程序在执行时只能接触到虚拟内存,它自己无法控制自己的数据哪部分保存在物理内存,哪部分保存在页面文件。一个程序所使用的虚拟内存空间为5M,但是它占用了2M物理内存和7M页面文件,这是完全可能的,你理解为建筑的“使用面积”总比“建筑面积”小就行了。所以你的程序看起来有效使用中的内存很小,而实际占用的物理内存和页面文件很多,那一般就是这个程序有问题导致大量无效利用了。
      

  4.   

    参考微软的Tess写的两篇关于内存泄漏的帖子http://blogs.msdn.com/tess/archive/2006/03/27/561715.aspxhttp://blogs.msdn.com/tess/archive/2006/08/08/692065.aspx
      

  5.   

    一般比较好的位置在Session_start事件中。不过就你的现象来看,程序本身的问题很大,最好还是从程序入手,才是解决问题的根本。