C# GC(垃圾回收机制)

时间:2021-05-20 00:03:32

也讲述了  Dispose/GC.Collect 有什么区别。

 所谓垃圾:没有被任何指向,或不会再被用到的内存区域。通俗一点来说,该对象不存在任何引用。

所谓托管:C#可以自动帮我们处理垃圾的对象,非托管即是C#不能帮助我们自动回收垃圾的对象。(需要手动处理,也就出现了Dispose)

eg: 非托管代码:文件流,操作数据库。

非托管代码我们可以通过Dispose()来主动释放内存,也可以使用using方法来释放内存。

 所谓GC:垃圾回收机制,自动帮我们释放内存。

为什么托管代码需要GC,Collect()来主动释放内存?

因为GC释放内存是随机的(也可以认为内存中存在一定数量之后会过来回收),相关地方我们需要主动释放。

使内存及时得到释放,让程序运行效率更高。

参考链接: