在.NET里原则上是不用回收,但是凡是有Dispose方法的类最好显式调用,应为有Dispose方法的类都会占用高昂的系统资源,所以最好在不用的时候释放,例如所有的Control,Form,以及数据库相关(不是所有),文件相关(不是所有)。

解决方案 »

  1.   

    用using block强制回收。
    using(String s=new String("aaa"))
    {
    .....
    }
    大括号完毕后s立刻被回收。
      

  2.   

    不行啊,我得一些变量用在了timmer事件里,所以好多都是跨函数的。没办法保证using块完整
      

  3.   

    还有,好像这样处理一些From类型时,Form的Meesage循环就给去掉了
      

  4.   

    那就只好显示调用dispose方法了。
    其实form倒是无所谓的,主要就是dataset了。
      

  5.   

    试试看吧
    GC.Collect();
    执行到这一句,占用内存会突然变成2-3M,不信自己试
    不能在繁忙的时候用,系统繁忙的时候自动决绝执行GC.Collect()
      

  6.   

    to ccmouse(曼妥思) 
    using(String s=new String("aaa"))
    {
    .....
    }using 中的对象必须继承了IDispose方法才能被系统释放
    不是所有类型都可以用的!
    你自己写一个类,这样用是编译不过的!
      

  7.   

    我在很多地方试过GC.Collect();不过好像作用不大。
    另:我的程序一起动,时还没有进行查询,就已经20M了,但有个很奇怪的现象:只要将其最小化,就只占900k了这是怎么回事,我的界面做的太浪费了?(一共大概有50个控件,Panle比较多)请高手讲讲。net中手工控制内存等资源回收的各种办法,多谢了!
      

  8.   

    .Net中最简单的winForm一启动便会占用14M内存。
      

  9.   

    .net VS 效率真是不知道怎么选择
      

  10.   

    c#执行时要调用framework,你的程序不大,他可是很大,但是不必费心,他也不会在大到哪去了,我的程序要差十来万的数据也是很快的.
    另外把数据库的操作放到子程序里,这样当子程序执行完毕就会自动回收资源.
    还有如果想节约资源就要用SqlDataReader而不要用SqlDataAdapter.
      

  11.   

    感觉怎么跟java似的,一运行起来,内存就。。爆满。,动一下鼠标反应都巨大。
      

  12.   

    mlab:....结果一运行就发现占用了20M内存和120几M交换区....
    你们是怎么知道占用多少内存的,是通过"任务管理器"吗,那交换区又是怎么知道的
      

  13.   

    taskinfo 要是要得话,可以去中国下在去下在!很好用的!