为什么我的项目刚刚启动就占用内存为38M   而且我在点击的时候 他还在加  昨天在测试 加到了 100多M  这是什么原因。。  请高手帮忙。在线等

解决方案 »

  1.   

    编程习惯问题,虽然.net宣传托管内存不需要考虑内存释放问题,但我还是认为应该用完就立即释放,
    我的习惯是
    分配内存代码
    try
    {
      操作内存代码
    }catch(exception ex)
    {
      异常代码
    }
    finally
    {
      释放内存代码
    }
      

  2.   

    忘记回答主要问题了 
    找个CLR Profiler 工具跟踪一下,看那个对象占用内存过大
    用aqtime 也可以
      

  3.   

    也许你可以使用 垃圾回收机制来释放资源啊,
       虽然说开发工具会 重写dispose() 方法来释放所有可能资源
                 但是像字段之类的可能需要自己去释放
              所以你可以使用析构函数去把所有的字段释放
      

  4.   

    就是程序在初期就要设计好,不要搞成一个.exe文件,那样程序一启动就会加载所有的东西到内存,当然占很大内存了;
      

  5.   

    不是用的资源随时要Dispose,比如一个方法里面调用了一个非托管的实例,构造的时候就要加usingclass A:IDispose是一个非托管的资源,方法体内,A的对象是一个局部变量,就需要写成using(A a = new A())
    {
        .......
    }如果A的对象是全局变量,就应该最后的Dispose时调用a.Dispose()
      

  6.   

    不要只考虑内存资源,CPU资源也直接影响程序性能。
    频繁释放内存可以节省内存资源,但却造成了CPU资源的浪费,某些时候反而会降低性能。
    .Net托管内存,是根据类的调用情况、内存的紧张程度、CPU的空闲程度综合判断什么时候释放内存。除非你非常了解自己的程序和程序运行的环境,否则不要去打乱.Net的垃圾回收过程。