前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GC垃圾回收的策略

GC垃圾回收的策略

作者头像
leon公众号精选
发布2022-04-27 14:17:23
2400
发布2022-04-27 14:17:23
举报
文章被收录于专栏:架构师高级俱乐部

.NetCore中GC垃圾收集的策略

垃圾一共分三级,0到2,大小依次递增并且生命周期也依次递增

一般第0代的对象都是较小的对象,第2代的对象都是较大的对象,第0代对象GC收集时间最短(毫秒级别),第2代的对象GC收集时间最长。当程序需要内存时(或者程序空闲的时),GC会先收集第0代的对象,然后收集第1代,第2代对象。

如果GC跑过了,内存空间依然不够用,那么就抛出了OutOfMemoryException异常。

GC跑过几次之后,第0代的对象仍然存在,那么CLR会把这些对象移动到第1代,依照生命周期的长短甚至再移动到第三代。

由于GC只能释放托管资源,不能释放非托管资源(数据库链接、文件流、甚至开发的非面向CLR的C++库等)这些都需要手动调用dispose函数或者自己去管理内存

链接 : https://docs.microsoft.com/en-us/dotnet/standard/garbage-collection/fundamentals

链接 : http://gad.qq.com/article/detail/287226

链接 : https://stackoverflow.com/questions/13082664/when-clr-calls-garbage-collector-in-net

链接 : https://blog.csdn.net/pan869823184/article/details/19299581

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 架构师高级俱乐部 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档