阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

大对象堆及.NET 垃圾回收器的改进

  • 2011-10-20
  • 本文字数:750 字

    阅读完需:约 2 分钟

当.NET 开发者编写内存密集型(memory intensive)应用程序的时候,即便总体内存看起来非常充足,也经常会在大对象堆的分配上遇到问题,产生 out-of-memory 异常。微软承诺会在.NET Framework 4.5 中对此做出改进,其中会有更好的LOH 管理,产生的内存碎片会更少。

CLR 会管理两种独立的堆并对其进行分配,小对象堆(small object heap,SOH)和大对象堆(large object heap,LOH)。所有大于 85,000 byte 的内存分配都会在 LOH 上进行。你可以阅读这些文章,以进一步了解这两种堆之间的区别。 为了在LOH 中换取性能,需要消耗大量内存的应用程序——像繁重的图像处理程序——会面临内存碎片的问题,并且可能在使用到最大限制的内存之前就发生 OutOfMemory 异常

.NET 在从 3.5 向 4.0 升级的时候,已经在总体内存分配方面做出了一些改进。负责.NET Framework 的垃圾回收器的资深项目经理 Brandon Bay 对上述问题做出评论,他说:

基于所提供的示例,执行了从 3.5 到 4.0 的升级之后,在耗尽大对象堆上的内存之前,我们可分配的内存增加了 22 倍。

而现在.NET 4.5 看起来是在此基础之上构建的:

在.NET 4.5 中,我们对大对象堆做出了两项改进。首先,我们显著改进了运行时管理空闲列表的方式,从而能够更有效地利用碎片。现在,内存分配器可以重新访问到之前版本中的分配器无法使用的内存碎片。其次,当处于服务器垃圾回收(server GC)模式时,运行时会在每个堆之间平衡 LOH 的分配。而在.NET 4.5 之前,我们只能针对 SOH 做出平衡。在 LOH 分配评测中,我们发现这两种改变让结果有了实质上的改善。

你可以阅读 Brandon 的完整文章以获得更多细节。想要了解更多关于.NET Framework 垃圾回收器的工作原理,你可以参考 MSDN 文档以及 Andrew Hunter 这篇文章

查看英文原文: Large Object Heap And .NET GC Improvements

2011-10-20 07:292738
用户头像

发布了 340 篇内容, 共 126.1 次阅读, 收获喜欢 13 次。

关注

评论

发布
暂无评论
发现更多内容

关于一场甲乙双方争议的思考

boshi

创业 项目管理

Kotlin DSL实现原理介绍

maijun

kotlin dsl

10天拿到字节跳动安卓岗位offer,阿里内部Android应届生就业宝典

android 面试 移动开发

Linux IPTables:如何添加防火墙规则

华为云开发者联盟

Linux 防火墙 iptables 数据包 防火墙规则

1-3年Android开发工程师面试经验分享,资深大牛带你了解源码

android 面试 移动开发

异地多活知识总结

十二万伏特皮卡丘

12年高级工程师的“飞升之路”,进阶学习资料

android 面试 移动开发

2019-2021历年阿里Android面试真题,面试杀手锏

android 面试 移动开发

Groovy参数默认值在接口测试中应用

FunTester

接口测试 Groovy FunTester 参数默认值 重载

2021Android常见笔试题,字节面试官

android 面试 移动开发

1-3年Android开发工程师面试经验分享,程序员去大公司面试

android 面试 移动开发

10天拿到阿里Android岗offer,深入剖析

android 面试 移动开发

2020-2021阿里巴巴安卓面试真题解析,2021最新版

android 面试 移动开发

2021Android岗面试题知识点小结,Android程序员必看

android 面试 移动开发

10天拿到字节跳动Android岗位offer,【面试必会】

android 面试 移动开发

10天拿到阿里Android岗offer,面试必知必会

android 面试 移动开发

1307页字节跳动Android面试全套真题解析火了,阿里P8大牛亲自教你

android 面试 移动开发

python学习:day3-流程控制

秦时明月

Python编程

10天用Flutter撸了个高仿携程App,薪资翻倍

android 面试 移动开发

2021Android常见面试题分享,年薪50W

android 面试 移动开发

小学生都能读懂的网络协议之:WebSocket

程序那些事

网络协议 HTTP 程序那些事 webscoket

2021Android开发现状分析,爆火的Android面试题

android 面试

10天拿到字节跳动Android岗位offer,2021金三银四

android 面试 移动开发

详解网商银行“三地五中心”数据部署架构

博文视点Broadview

2020-2021华为Android面试真题,大厂内部资料

android 面试 移动开发

2021Android大厂面试真题,2021Android面试心得

android 面试 移动开发

10天拿到字节跳动Android岗位offer,看完跪了

android 面试 移动开发

12个View绘制流程高频面试题,膜拜大牛

android 面试 移动开发

kafka集群迁移实践

小江

kafka 迁移 消息队列

浅谈函数式编程与 Stream

Dobbykim

2019-2021历年字节跳动Android面试真题解析,字节跳动高工面试

android 面试 移动开发

大对象堆及.NET垃圾回收器的改进_语言 & 开发_Roopesh Shenoy_InfoQ精选文章