写点什么

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

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

关注

评论

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

2015年9月微软安全更新汇总 - MS15-094至MS15-105漏洞修复

qife122

安全更新 Windows安全

VMware ESXi 8.0U3f 发布 - 领先的裸机 Hypervisor

sysin

esxi

中烟创新入选2025全国企业“人工智能+”行动创新案例TOP100

中烟创新

招商管理系统(源码+文档+讲解+演示)

深圳亥时科技

成功案例丨减重64%!Altair 解决方案助力3D打印铣削头实现轻量化

Altair RapidMiner

仿真 CAE hyperworks 3D打印 Radioss

HCI发布《2025年洞察报告》

财见

BI 数据可视化平台建设(3)—首页性能提升实践

vivo互联网技术

前端 性能调优 BI可视化

VMware Workstation 17.6.4 Pro for Windows & Linux - 领先的免费桌面虚拟化软件

sysin

Workstation

基于 Amazon Nova Sonic 和 MCP 构建语音交互 Agent

亚马逊云科技 (Amazon Web Services)

百度视频云互动大模型SDK适配鸿蒙,让人机交互更智能、更开放

新消费日报

埋点采集之曝光

神策技术社区

埋点 曝光埋点 大数据分析

VMware Tools 12.5.3 发布 - 客户机操作系统无缝交互必备组件

sysin

vmware

大数据-43 Redis Lua脚本实战全解析 eval redis.call redis.pcall

武子康

Java lua redis 大数据 分布式

全方位优化:智能化工器具库房管理综合解决方案

斯科信息

RFID解决方案 RFID工具库房 斯科信息 RFID技术

VMware Fusion 13.6.4 for Mac - 领先的免费桌面虚拟化软件

sysin

fusion

更新Mac软件有哪些方法 Mac软件如何管理待更新软件

阿拉灯神丁

appstore 应用程序 Mac软件 卸载清理软件 CleanMyMac X中文

Console 纳管 Elasticsearch 9(二):日志监控

极限实验室

elasticsearch console

VMware Tools 13.0.1.0 发布 - 客户机操作系统无缝交互必备组件

sysin

vmware

VMware ESXi 8.0U2e 发布 - 领先的裸机 Hypervisor

sysin

esxi

微软发布安全公告2887505:IE远程代码执行漏洞分析与缓解方案

qife122

网络安全 浏览器安全

CST软件无限平面圆孔RCS --- 单站, 单角多频,T和F求解器(远场),去耦平面

思茂信息

cst CST软件 CST Studio Suite

资源利用率提升50%:Serverless 驱动国诚投顾打造智能投顾新范式

阿里巴巴云原生

阿里云 Serverless 云原生

教堂定制P4 LED屏幕安装:提升宗教体验

Dylan

数字化 LED显示屏 全彩LED显示屏 led显示屏厂家 户内led显示屏

清华大学软件学院院长王建民教授:AI 时代,如何从采数到用数?

Apache IoTDB

隐藏Bash历史记录:实用技巧与最佳方法

qife122

Linux 安全

产品更新丨谷云科技 iPaaS 集成平台 V7.6 版本发布

谷云科技RestCloud

API网关 产品更新 集成平台 ipaas

VMware ESXi 7.0 U3w 发布 - 领先的裸机 Hypervisor

sysin

esxi

VMware ESXi 9.0.0.0100 发布 - 领先的裸机 Hypervisor

sysin

esxi

云测试提前定位和解决问题 萤火故事屋 上架流程

万少

HarmonyOS NEXT

时序数据库 TimechoDB V2.0.5 发布 | 新增树转表视图、模型微调等功能

Apache IoTDB

Golang基础笔记十二之defer、panic、error

Hunter熊

golang 后端 defer panic Error

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