写点什么

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

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

关注

评论

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

BetterZip 5 for mac(专业解压缩软件) v5.3.4中文注册激活版

mac

苹果mac Windows软件 BetterZip 压缩和解压缩工具

软件测试开发/全日制丨Web端测试—JavaScript讲解 学习笔记

测试人

软件测试

小程序如何帮助电商发力,寻找增长突破口

Geek_2305a8

一文读懂$mash 通证的 “Fair Launch” 规则,将公平发挥极致

西柚子

专业Visio绘图文件阅读器:VSD Viewer 激活最新版

胖墩儿不胖y

Mac软件 文件查看器

用友签约新奥集团,共建智慧资产管理平台

用友BIP

资产管理

大模型训练中断,断点续传助力快速恢复

百度开发者中心

人工智能 深度学习 大模型

NeurIPS'23 Paper Digest | PromptTPP: Prompt Pool 与时序点过程模型的持续学习

可信AI进展

机器学习 持续学习 Prompt prompt learning 时序模型

DDD落地实践-架构师眼中的餐厅

EquatorCoco

架构 DDD 领域驱动

跨国公司为什么要部署SD-WAN

Ogcloud

网络 SD-WAN 组网 组网网络

视频直播技术干货(十一):超低延时视频直播技术的演进之路

JackJiang

网络编程 即时通讯 IM

一文读懂$mash 通证的 “Fair Launch” 规则,将公平发挥极致

小哈区块

教育场景数字化中音视频小程序的发展

Onegun

在线教育 教育 教育科技

基于大模型训练的编程助手

百度开发者中心

人工智能 大模型 智能代码助手

解读 $mash 通证 “Fair Launch” 规则,将公平发挥极致

大瞿科技

音视频小程序在教育行业,短期爆发or未来趋势?

FinFish

在线教育 小程序容器 小程序技术 音视频小程序

新规施行推动数据资产化迈出关键一步

用友BIP

数据资产

ICT行业“样品”相关业务挑战及解决方案介绍

用友BIP

ICT行业供应链

mac电池最大充电限制软件:AlDente Pro 激活中文版

mac大玩家j

Mac软件 电池管理工具 充电管理

如何下载和安装 Eclipse?

小魏写代码

一文详解 Java 限流接口实现

阿里技术

Java 分布式限流 限流算法 应用级限制 限流接口

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