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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 孤神法法 中级黑马   /  2014-3-17 11:55  /  886 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 孤神法法 于 2014-3-17 14:28 编辑

平时我们在堆中用new开辟一块内存空间,那么这个空间什么时候释放的?我们并没有认为的去释放我们开辟的内存空间

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

4 个回复

正序浏览


垃圾回收原理和视频当中的方法调用时的内存流程有相通的地方:
c#中垃圾回收器将分配给他的对象分为3个类别或代。
1、方法调用返回时会去除被引用的方法的引用,并把它交给垃圾处理器,
2、当请求为新的方法对象分配内存空间且缓存不够时会启动第0代清理,并将当前正在使用的对象交给上一代,第0代传给第1代,第1代传给第2代。
3、第0代清理后内存仍 不能满足内存请求时启动第1代清理,之后是第2代。

回复 使用道具 举报
由CLR(公共语言运行时)负责垃圾回收,但是回收时间是不确定的。所以对于占用资源的类实例应在使用完毕后手动调用Dispose()方法释放资源,或者对于继承了IDisposable的类实例可以使用using(……){……}在相关实例使用完毕后自动释放资源。
回复 使用道具 举报
如果不再继续使用,那么GC垃圾回收器会自动帮你回收NEW出来的内存,但是什么时候回收并不确定。
回复 使用道具 举报
垃圾处理器会帮你处理掉
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马