写点什么

大对象堆及.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:293110
用户头像

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

关注

评论

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

LinkedBlockingQueue源码分析-新增和删除

zarmnosaj

7月月更

Ubuntu安装PyCharm

IT蜗壳-Tango

7月月更

从Starfish OS持续对SFO的通缩消耗,长远看SFO的价值

股市老人

Binder核心API

北洋

binder 7月月更

云原生应用开发之 gRPC 入门

宇宙之一粟

Go gRPC 云原生 Go 语言 7月月更

Flutter 3.0框架下的小程序运行

FN0

flutter 前端框架 小程序容器

接口测试进阶接口脚本使用—apipost(预/后执行脚本)

Xd

Java 数据库 接口测试工具

牛客基础语法必刷100题之基本类型

京与旧铺

7月月更

java编程思想

乌龟哥哥

7月月更

图解网络:揭开TCP四次挥手背后的原理,结合男女朋友分手的例子,通俗易懂

wljslmz

TCP 网络协议 网络技术 7月月更 TCP四次挥手

CorelDRAW2022下载安装电脑系统要求技术规格

茶色酒

cdr2022

什么是数据资产?为什么背后蕴藏45万亿这么大的市场?

雨果

数据资产 数字经济

第四期SFO销毁,Starfish OS如何对SFO价值赋能?

BlockChain先知

玩转Sonar

sean77

接口测试要测试什么?

Xd

Java 后端 接口测试

Python|读写文件

AXYZdong

Python 7月月更

Java多线程案例之任务定时执行器

未见花闻

7月月更

【深度学习】AI一键换天

逝缘~

人工智能 7月月更

CleanMyMac X2022全新版功能介绍

茶色酒

CleanMyMac CleanMyMac X

【SolidWorks】修改工程图格式

大头博士先生

SlideWorks

Http响应头处理

急需上岸的小谢

7月月更

redis你到底懂不懂之list

zxhtom

7月月更

攻防演练中沙盘推演的4个阶段

穿过生命散发芬芳

7月月更 沙盘推演

CleanMyMac X试用版Mac清理工具

茶色酒

CleanMyMac CleanMyMacX CleanMyMac X

【愚公系列】2022年7月 Go教学课程 006-自动推导类型和输入输出

愚公搬代码

7月月更

Service Mesh的基本模式

阿泽🧸

Service Mesh 7月月更

正则表达式

Jason199

正则表达式 js 7月月更

5G NR 系统消息

柒号华仔

5G 7月月更

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