黑马程序员技术交流社区
标题:
哪位兄台能帮我解释一下GC啊!
[打印本页]
作者:
向晓伟
时间:
2014-7-19 19:02
标题:
哪位兄台能帮我解释一下GC啊!
本帖最后由 向晓伟 于 2014-7-19 19:15 编辑
表示看不懂啊!!只知道是垃圾回收~
作者:
许庭洲
时间:
2014-7-19 19:09
本帖最后由 许庭洲 于 2014-7-19 19:15 编辑
1. GC(Garbage Collection)是垃圾收集器, .NET平台提供的GC将负责资源的释放与对象撤销时的内存清理工作。
2. 程序员不用担心内存管理,因为垃圾收集器会自动进行管理;
3. GC只能处理托管内存资源的释放,对于非托管资源则不能使用GC进行回收,必须由程序员手工回收;
4. 请求垃圾收集,可以调用方法: GC.Collection()一般不需要手动调用GC.Coleection()。
作者:
深夜的空气
时间:
2014-7-19 19:12
GC就是垃圾回收器,一般来说系统会自动检测不会使用的对象或变量进行内存的释放,不需要手动调用,用Collect()就是强制进行垃圾回收,使内存得到及时的释放,让程序效率更高.
给个例子:使用 Optimized 设置对第 2 代对象进行垃圾回收。
using System;
class Program
{
static void Main(string[] args)
{
GC.Collect(2, GCCollectionMode.Optimized);
}
}
作者:
追梦无悔
时间:
2014-7-19 19:14
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()函数,释放其他资源。
希望对你有用
作者:
深夜的空气
时间:
2014-7-19 19:14
可以参考一下这篇文章,没事多问百度。其实我也不懂
http://blog.csdn.net/xmsheji/article/details/5452914
作者:
向晓伟
时间:
2014-7-19 19:15
还是要好好捉摸一下!感谢楼上几位的回答!
作者:
乔相坤
时间:
2014-7-20 09:12
我也来学习一下
作者:
suzhousongkan
时间:
2014-7-20 12:05
我是来学习的~~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2