比如这样:
        public string GetAA(long bh)
        {
            string aa="";
            ........
            return "";
        }
这个“aa”变量在方法内部如果不做任何处理,它会在这个方法返回后自动释放吗?我的程序有点大,运行起来内存只增不减。处理了很多地方,但效果都不是很明显,也用过GC,可以有效释放内存,不过不太想用GC,想在细节上处理内存问题,所有请教一下大家,请大家不吝赐教

解决方案 »

  1.   

    手动释放,和C++里一样,该dispose的都dispose掉,还有很多其它情况,你可以看看这篇:http://blog.csdn.net/yuanhuiqiao/article/details/5264480
    我的项目里也遇到内存的问题,因为其中调用了VC编写的DLL,有非托管资源存在。
      

  2.   

    这句话我经常看到,是不是在方法外定义的成员变量,在方法内引用了该变量,这样的话,只要方法外定义的变量保持着对它的使用,就不会释放?那是不是只有这个类释放了,这个成员变量,包括原先在方法内定义的变量才会被释放?因为有些变量是没有dispose()方法,可以手动释放的。
      

  3.   

    如果你真那么在意效率
    用using()
    {
     方法体
    }
      

  4.   

    GC会自动进行垃圾回收,时间不确定。有时间去了解一下GC的相关知识点。
      

  5.   

    哦,我没理解不作任何处理的意思。如果确认了是因为GC机制导致的内存问题,那就用marshal分配到非托管内存,然后处理,然后人工释放。
      

  6.   

    需要资源释放的资费加在using() 块内
      

  7.   

    为什么加在using块里就能增加效率?
      

  8.   

    using块应该是用于包含内核对象的类,托管内存的释放和它没关系。