黑马程序员技术交流社区
标题:
垃圾回收
[打印本页]
作者:
李先洋
时间:
2012-12-16 22:57
标题:
垃圾回收
C#有自动回收垃圾的功能,到底是谁在完成回收呢?
作者:
徐威
时间:
2012-12-16 23:19
调用Dispose()不是释放对象的内存资源!
调用Dispose()实际上是告诉GC这个对象可以回收了
实际GC回收还有一系列的操作的,这都是.net内部封装的了
ps: GC = 垃圾回收器
编程的好习惯就是要做要规范!如变量命名到程序的流程要清晰
做C#的不用过多在意内存的释放~
以后你实践多了自会明白其中道理,经验才是最重要的
作者:
张向阳
时间:
2012-12-16 23:24
垃圾回收器GC(garbage collection)啊!这可以说是.NET提供的一种方法,一种机制,这样可以确保应用程序不再使用某些内存时,这些内存会被释放掉!就像吃完饭 收盘子一样,没有代码托管之前,我们要手动释放资源,好比要自己收盘子一样!有了资源托管,这项工作就由系统自动完成了,好比是服务员帮我们收盘子一样!这样我们就可以把更多精力放在代码的逻辑上了!还有GC检查内存的频率是不固定的,有时候一秒钟可能进行上千次的检查,也可能几秒钟检查一次,或者随时进行检查,反正不管怎么说都会自动进行检查就对了,或慢或快而已!所以有些时候我们不一定非要坐等垃圾回收期来检查,必要的时候也需要自己进行通过代码手动释放资源的!
作者:
刘斌
时间:
2012-12-17 18:32
C#中有GC垃圾回收机制,一般会在最适合的时间进行垃圾回收,GC需会遍历所有内存中的数据是否被引用,如果没有被引用就视为垃圾,然后进行标记,紧接着把所有有效数据转存到下一代内存中,然后清空上面的内存,每代内存的大小是固定的,这意味着当某代内存被装满的时候,GC才会执行回收工作,这是一个带有优化的过程,所以说手工调用GC只会降低托管的性能,频繁调用GC.Collect()反而会造成不必要的资源耗费,况且不确定当前垃圾的数量是否接近临界点,GC回收工作是个很复杂的过程,同时会损耗更多的内存
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2