应用程序在调用WebService的时候,我发现后台服务器上的aspnet_wp进程占用的内存多达150M,而且有继续上涨的趋势。我在代码中把连接对象都进行了Close()和Dispose()处理,结果根本就不管用!
请问该怎么解决!

解决方案 »

  1.   

    你这个需要在程序中加入强制垃圾收集代码:
     GC.collect();
      

  2.   

    正常,.net本来就占内存,我本机调试时aspnet_wp有时都可以达到100M以上.
      

  3.   

    可以考虑在IIS里设置给你的WebService添加一个应用程序池,设置应用程序池的自动回收时间,
    不过如果单独一个WebServicer的内存达到150M,那可能是程序有问题。
      

  4.   

    我看书上介绍,VS.NET 的回收机制是按照比例来进行的,如果你的内存只有256M,那么回收就快,如果你的内存有 2G ,那么用了 1G 系统也不会启用回收,至于这个比例是多少我不大清楚,系统有个智能运算,只监视比例。
      

  5.   

    调GC的Collect强制回收,在你的Asmx中的构造函数中调用吧.我也遇到同样问题,调用这个方法内存至多40几M.以前都要到100多M,关键我的是要释放数据库连接,不知道你是否遇到同样问题.
      

  6.   

    这150M不见得就是多了,你应该做个压力测试,看同时有10人,50个,100个请求时,会占多少,
    毕竟它的"基础设施"要起动,就要占很多的.另外,不要随便调用GC,更不要频繁调用,这要做反倒更糟,GC运行时,是相当费CPU的,最好是在请求较少时进行
      

  7.   

    我最后的解决办法是GC.collect()!