黑马程序员技术交流社区
标题:
C#释放资源
[打印本页]
作者:
杨磊
时间:
2012-2-3 08:56
标题:
C#释放资源
假设有这么一条语句: int[] test=new int[100];
在使用完后如何释放它所占用的资源?谢谢。
我知道C#会自动回收资源。但有没有办法手动释放。就像很多类提供的dispose()方法那样
作者:
代剑
时间:
2012-2-6 22:40
楼主您好!这就是所谓.net 内存泄露问题。这个数组被你建出来了可是又没有使用,他仍旧占用内存.您可以采用楼上的办法GC.Collect()手动垃圾回收。
作者:
代剑
时间:
2012-2-6 22:40
本帖最后由 代剑 于 2012-2-6 22:46 编辑
补充说明一下 GC 是垃圾收集器 。 程序员不用担心内存管理 , 因为垃圾收集器会自动进行管理 。 GC 只能处理托管内存资源的
释放,对于非托管资源则不能使用 GC 进行回收,必须由程序员手工回收,一个例子就是 FileStream 或 者
SqlConnection 需要程序员调用 Dispose 进行资源的回收。
要请求垃圾收集,可以调用下面的方法: GC.Collection() 一般不需要手动调用 GC.Collection() 。加分的回答 : 有
一次用 OLEAutomation 的方式操作 Excel 的时候, Excel 经常不能正常退出,在 MSDN 网站上找到官方解答说
要调用一下 GC.Collection() ,至于为什么这样就可以也没找到答案。
作者:
肖腾宇
时间:
2012-3-1 08:37
手动释放资源可以用析构函数,和using关键字
析构函数用有~前缀的类名来声明
public class myClass
{
~myClass()
{
}
}
使用using 关键字的对象,在代码块的末尾自动调用Dispose方法
类名 自定义类名=new 类名();//实例华类
using 自定义类名
{
......
}
或
using 类名 自定义类名=new 类名();
{
......
}
作者:
刘亚中
时间:
2012-3-6 15:44
垃圾回收针对的是 对象堆中的资源,就是所谓的new的对象,而与之对应的是线程栈,线程栈不在垃圾回收的范围内!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2