解决方案 »

  1.   

    http://blog.jobbole.com/31443/
    这个可以解释你的问题
      

  2.   

    Bitmap 要显示释放,不能依赖 GC
      

  3.   

    .net的内存回收机制:当一个对象没有人引用的时候就会被回收内存回收机制并不是每次都检测所有对象的~,而是把对象归到某一代中~
    就好像爷爷一代,爸爸一代,孩子一代
    很明显~爷爷那一代更需要经常去判断是否失去引用的~ 而孩子那一代则不需要频繁地去检测是否失去引用其实按你上面的~都是失去引用的~可能是被静态类型的变量引用过~ 所以被归为不需要经常判断的那一代~
    所以在for循环中~垃圾回收虽然执行了~但没有检测他们~当然上面只是我的猜测~ 你可以看《clr via C#》这本书当然我也可以提供验证我猜测的方法~ for 10次就好~
    然后程序不要关~过一段时间后 看内存是否会降下来~貌似还有一些专业的工具可以检测~
      

  4.   

    Bitmap是非托管的资源,需要自己手动调用Dispose方法来释放内存吧。
    你这2种方法都会造成内存溢出。
      

  5.   

    你每次for循环时都new了一个新的newbmp   而这个变量在static方法  static方法不自行销毁 所以你内存会爆掉