写点什么

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

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

关注

评论

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

7 款最佳数据集成平台推荐

NocoBase

开源 低代码 ETL 数据集成平台 数据模型驱动

使用avPlayer和xComponent进行视频播放

音视频技术 鸿蒙app开发 鸿蒙生态

当四大美女遇上 MetaGPT,一键解锁跨时空AI畅聊新体验

阿里巴巴云原生

阿里云 Serverless 云原生

Disruptor—核心源码实现分析

不在线第一只蜗牛

Java

linux命令使用消费kafka的生产者、消费者

刘大猫

人工智能 kafka Linux 生产者 消费者

最牛的Java面试八股文1000集,不接受反驳

Geek_Yin

程序员 java面试 Java面试题 Java面试八股文

PyTorch 实现GoogleNet用于图像分类

永荣带你玩转昇腾

昇腾910-PyTorch 实现 ResNet50图像分类

永荣带你玩转昇腾

一文讲透:低代码平台是什么?低代码平台应该如何挑选?

优秀

低代码 低代码平台

Unity 斩获金帆奖“2025 H1 优秀出海营销增长服务”

极客天地

鸿蒙仓颉开发语言实战教程:自定义tabbar

幽蓝计划

昇腾910-PyTorch实现传统CTR模型WideDeep网络

永荣带你玩转昇腾

PyTorch 实现MobileNetV1用于图像分类

永荣带你玩转昇腾

深度剖析:AI Agent 落地困境,如何破局重生?

Techinsight

创建线程的8种方法,90%的人不知道

量贩潮汐·WholesaleTide

Java

层层剥开开鸿Bot,我们看到的是“开发者优先”

脑极体

AI

iVX DevOps 集成:从代码生成到 CI/CD 流水线的自动化协作实践

代码制造者

BOE(京东方)第6代新型半导体显示器件生产线全面量产 打造全球显示产业新引擎

爱极客侠

鸿蒙仓颉开发语言实战教程:自定义组件

幽蓝计划

通义灵码 Agent+MCP 打造吃瓜神器

阿里巴巴云原生

阿里云 云原生

java的jar后台启动

刘大猫

Java 人工智能 jar 数据分析 后台启动

基于YOLOv8的人脸表情识别项目【完整源码数据集+PyQt5界面+完整训练流程+开箱即用】

申公豹

yolov8

最新版java面试题(八股文+场景题)

Geek_Yin

程序员 Java 面试 Java面试八股文 Java 面试题

【拥抱鸿蒙】HarmonyOS实现扫码安装

郑知鱼

华为 鸿蒙 自动化 HarmonyOS NEXT HarmonyOS5.0

跨端生态重构×AI智能驱动:移动研发模式新纪元

xuyinyin

PyTorch 实现 Alexnet图像分类

永荣带你玩转昇腾

通义灵码 Agent+MCP 打造吃瓜神器

阿里云云效

阿里云 云原生 通义灵码

MBT 是什么?带你轻松理解基于模型的测试

小巫debug日记

MBT

Wireshark插件开发实战-Lua解析自定义二进制协议

歆晨技术笔记

Kyutai 推出模块化语音 AI 工具 Unmute,赋予大模型语音能力;开源语音硬件「小智 AI 」演示视觉理解能力丨日报

声网

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