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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 向晓伟 中级黑马   /  2014-7-19 19:02  /  1191 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 向晓伟 于 2014-7-19 19:15 编辑

表示看不懂啊!!只知道是垃圾回收~

评分

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

查看全部评分

7 个回复

倒序浏览
本帖最后由 许庭洲 于 2014-7-19 19:15 编辑

1. GC(Garbage Collection)是垃圾收集器, .NET平台提供的GC将负责资源的释放与对象撤销时的内存清理工作。
2. 程序员不用担心内存管理,因为垃圾收集器会自动进行管理;
3. GC只能处理托管内存资源的释放,对于非托管资源则不能使用GC进行回收,必须由程序员手工回收;
4. 请求垃圾收集,可以调用方法: GC.Collection()一般不需要手动调用GC.Coleection()。

评分

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

查看全部评分

回复 使用道具 举报
GC就是垃圾回收器,一般来说系统会自动检测不会使用的对象或变量进行内存的释放,不需要手动调用,用Collect()就是强制进行垃圾回收,使内存得到及时的释放,让程序效率更高.
给个例子:使用 Optimized 设置对第 2 代对象进行垃圾回收。
using System;
class Program
{
    static void Main(string[] args)
    {
        GC.Collect(2, GCCollectionMode.Optimized);
    }
}

评分

参与人数 2技术分 +1 黑马币 +2 收起 理由
陈君 + 1
向晓伟 + 2 赞一个!

查看全部评分

回复 使用道具 举报 1 0
1. 垃圾回收的目的:提高内存的利用效率。

2. 垃圾回收器: 只回收托管堆中的内存资源,不回收其他资源(数据库连接、文件句柄、网络端口等);

3. 什么时候垃圾回收?

a) 当对象没有任何变量指向的时候就可以被垃圾回收了。(可以被回收,但是不知道什么时候可以回收,回收是由系统决定的

b) GC.Collect(); //手动调用垃圾回收(一般不需要手动调用垃圾回收,由系统自动调用)

c) 不要手动调用,因为垃圾回收会调用一系列的算法,需要移动对象等等,这时为了达到目的,需要暂停应用程序的已处理,这时如果频繁的调用垃圾回收反而会影响性能。

4. 垃圾回收器中的“代”的概念

a) 垃圾回收中的代有三代:

i. 回收的时候优先回收第0代,没有回收的移动到第一代,第一代和第二代要倒满的时候才能回收。

b) 垃圾回收采用代的概念,避免了每次垃圾回收都遍历所有的对象,减少了垃圾回收的时间。

第0代的回收频率高,第1代次之,第2代再次之。

效果:越老的对象活的越长。

5. 除了内存资源之外的其他资源。

a) 使用Dispose();释放除内存之外的方法。

b) ~Class1(){}//析构函数(c++中的名称)在C#中叫Finalize()函数(终结函数)

与类名相同

在当前对象被垃圾回收之前会调用Finalize()函数,释放其他资源。

希望对你有用

评分

参与人数 2技术分 +1 黑马币 +2 收起 理由
陈君 + 1
向晓伟 + 2 很给力!

查看全部评分

回复 使用道具 举报
可以参考一下这篇文章,没事多问百度。其实我也不懂
http://blog.csdn.net/xmsheji/article/details/5452914
回复 使用道具 举报
还是要好好捉摸一下!感谢楼上几位的回答!
回复 使用道具 举报
我也来学习一下
回复 使用道具 举报
我是来学习的~~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马