A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨磊 黑马帝   /  2012-2-3 08:56  /  4410 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

假设有这么一条语句: int[] test=new int[100];
在使用完后如何释放它所占用的资源?谢谢。
我知道C#会自动回收资源。但有没有办法手动释放。就像很多类提供的dispose()方法那样

评分

参与人数 1技术分 +2 收起 理由
朱勋 + 2

查看全部评分

4 个回复

倒序浏览
楼主您好!这就是所谓.net 内存泄露问题。这个数组被你建出来了可是又没有使用,他仍旧占用内存.您可以采用楼上的办法GC.Collect()手动垃圾回收。
回复 使用道具 举报
本帖最后由 代剑 于 2012-2-6 22:46 编辑

补充说明一下 GC 是垃圾收集器 。 程序员不用担心内存管理 , 因为垃圾收集器会自动进行管理 。 GC 只能处理托管内存资源的
释放,对于非托管资源则不能使用 GC 进行回收,必须由程序员手工回收,一个例子就是 FileStream 或 者
SqlConnection 需要程序员调用 Dispose 进行资源的回收。
要请求垃圾收集,可以调用下面的方法: GC.Collection() 一般不需要手动调用 GC.Collection() 。加分的回答 : 有
一次用 OLEAutomation 的方式操作 Excel 的时候, Excel 经常不能正常退出,在 MSDN 网站上找到官方解答说
要调用一下 GC.Collection() ,至于为什么这样就可以也没找到答案。
回复 使用道具 举报
手动释放资源可以用析构函数,和using关键字
析构函数用有~前缀的类名来声明
public class myClass
{
     ~myClass()
       {

       }
}

使用using 关键字的对象,在代码块的末尾自动调用Dispose方法

类名   自定义类名=new 类名();//实例华类

using 自定义类名
{
      ......
}



using 类名   自定义类名=new 类名();
{


......

}
回复 使用道具 举报
垃圾回收针对的是 对象堆中的资源,就是所谓的new的对象,而与之对应的是线程栈,线程栈不在垃圾回收的范围内!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马