这10M大部分是.net虚拟机运行消耗的内存,
访问数据库用DATASET时会把数据放到内存里.如果表很大就很占内存..

解决方案 »

  1.   

    我是用了大量的DataSet来访问数据库的,但是我用的DataSet都是一个方法内的局部变量, 难到用完后他自己不能及时释放掉吗?
      

  2.   

    如果把方法得到的
    DATASET绑定到了控件的DATASOURCE,
    那么就算出了这个方法,
    因为引用记数不为0,
    这个DATASET所占的内存不会被释放掉
    (而且C#的对象在堆中分配,由GC管理,
    所以内存不一定会立即被释放.)
      

  3.   

    主要是.net framework运行需要的内存
      

  4.   

    .net配套的就是大内存,然后省了程序员的事。大家说是吗?
      

  5.   

    那你把窗口最小化,占用的内存不就小了,再最大化看看内存有什么变化?
    这才到哪里,人家Java都不怕,你C#就更不用怕了。
      

  6.   

    及时dispose(),加快垃圾回收速度
      

  7.   

    频繁运行dispose(),不是好方法
      

  8.   

    .NET 的内存管理机制中有一点,如果物理内存较大的话,GC 回收的比较懒,相反就比较勤。如果你想要使用内存的指标好看一些,适时调用一下 GC.Collect(2),这会让运行的程序的内存使用量看起来会少很多。另外,打开了窗口,你马上最小化一次看看,内存量是不是马上降下来了?即使再还原了窗口,内存也不是很多。但随着执行的继续,可能内存量又会上来,再最小化一次,又降下去了。运行过程如果涉及了大量的运算后,建议使用一下 GC.Collect 方法,这仅是为了好看一些。其实没这个必要的。.NET 中,内存用量可能是要相对多一点,但这不是什么缺点。.NET 的内存管理机制是优秀的、卓越的。
      

  9.   

     AhBian(阿扁)说的最小划任何程序都是这样,只是WINDOWS的页面置换对内存的影响,和程序本身无关。