写点什么

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

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

关注

评论

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

在外包干了七年,废了......

Summer

Java 编程 程序员 面试 架构师

天翼云与百川智能达成战略合作,共同推进模型行业创新应用!

天翼云开发者社区

人工智能 云计算 云服务

“天翼云息壤杯”高校AI大赛云南赛区启动!

天翼云开发者社区

云计算 AI 天翼云

探索未来之路,激发AI创新活力!“天翼云息壤杯”高校AI大赛北京区域赛开赛!

天翼云开发者社区

云计算 AI 天翼云

1688商品详情数据接口(1688.item_get)丨1688API接口代码指南

tbapi

1688商品详情接口 1688API 1688商品数据采集

企业数字化转型部署SD-WAN的6大好处

Ogcloud

数字化转型 企业数字化转型 SD-WAN SD-WAN组网 SD-WAN服务商

SonarQube Server 10.8 发布,新增功能概览

sysin

SonarQube

CFD专栏丨HyperMesh CFD功能详解:后处理功能Part 1

Altair RapidMiner

仿真 altair Hypermesh CFD

今日分享 | 初识inBuilder业务查询语言-BQL

inBuilder低代码平台

低代码

【低代码】低代码平台协同&敏捷场景下的并行开发解决方案探索

京东科技开发者

百度商业系统升级为“百度伴飞”,将释放10倍商业空间、延伸3倍经营时间

极客天地

深入理解 Go 高性能网络框架 nbio

俞凡

golang

微店API接口探索:轻松解锁商品详情新视界

代码忍者

API 接口 pinduoduo API

远程面试阿里、蚂蚁、京东、美团后整理份283页Java核心面试宝典!

Summer

Java 编程 程序员 面试 架构师

如何提升出海企业访问海外站点的速度?

Ogcloud

海外网络加速 国际网络专线 网络专线

Veeam Backup & Replication 12.3 (Windows) - 备份和恢复

sysin

veeam backup

中国零售时装品牌商品数字化转型挑战与路径

第七在线

Redis探秘Sentinel(哨兵模式)

不在线第一只蜗牛

redis

【案例分享】思牧科技:赋能智能物流行业,中邮信源的零代码数字化之路

明道云

DApp开发:从合约到系统快速上线解决方案

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

超 90% 研发人员使用通义灵码,盖雅工场打造研发提效驾驶舱

阿里云云效

阿里云 云原生 通义灵码

从DevOps状态报告看技术团队的文化建设

京东科技开发者

AIGC项目中的【模板进程】方案的设计实践

京东科技开发者

【FAQ】HarmonyOS SDK 闭源开放能力 —Remote Communication Kit

HarmonyOS SDK

harmoyos

文小言累计调用量超35亿次,计划接入法律、票务、电商等30+AI服务化功能

极客天地

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