垃圾回收

 在.NET 中的 GC 指的是 CLR 中的自动内存管理器,GC 负责管理 .NET 程序的内存分配和释放。它负责在程序执行过程中自动管理内存,避免了许多常见的内存管理问题。以下是.NET GC的一些关键知识点,有助于.NET开发更深入地理解其工作原理和如何优化应用程序性能,以及可以提高面试的成功率。

1、代的概念

.NET GC将堆内存划分为三代:第0代(新生代)、第1代和第2代。这种代的划分使得垃圾收集可以更加高效地进行,因为大多数对象在短时间内就会变得不可达,而只有少数对象具有较长的生命周期。

第0代:新分配的对象被放置在此代中。垃圾收集频率最高,生命周期短的对象可能在此代被回收。垃圾收集在这一代发生得最频繁。新分配的对象形成了第0代的对象,并且是隐式的第 0 代集合。但是,对象很大,它们将进入大对象堆 (LOH),有时也称为第3 代。第3 代可以理解为物理代,作为第二代的衍生。 大多数对象在第 0 代被回收用于垃圾收集,并且不会存活到下一代。

第1代:经过一定次数的垃圾收集后,仍然存活的对象会被提升到此代。在垃圾收集器执行第 0代的收集后,它会压缩可访问对象的内存并将它们提升到第 1代。因为在收集中幸存下来的对象往往具有更长的生命周期,所以将它们提升到更高的代是有意义的。

第2代:经过更多次的垃圾收集后,仍然存活的对象会被提升到此代。垃圾收集在这里发生的频率较低。长寿命对象的一个示例是服务器应用程序中的对象,其中包含在进程持续期间有效的静态数据。在集合中存活的第 2 代对象将保留在第 2 代中,直到它们被确定在未来的集合中不可访问。 大对象堆(有时称为第3 代)上的对象也在第 2代中收集。

垃圾回收也是进行内存整理的一个过程。

  • 24
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A_nanda

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值