写点什么

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

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

关注

评论

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

Java培训需要多长时间

小谷哥

Jenkins 踩坑(三)| Email 配置与任务邮件发送

霍格沃兹测试开发学社

开源治理:安全的关键

SEAL安全

开源 开源文化 开源安全 开源安全与治理

2022年无糖茶饮料发展洞察分析

易观分析

无糖茶 行业洞察

node在大前端中的应用场景

达摩

nodejs

前端高频面试题(三)(附答案)

helloworld1024fd

JavaScript 前端

易观千帆 | 2022年7月苏州市手机银行应用活跃人数榜单

易观分析

金融 手机银行 榜单 苏州

大数据培训机构学习后就业前景如何

小谷哥

MockServer 服务框架设计

霍格沃兹测试开发学社

5 个 JavaScript 写法小技巧分享

掘金安东尼

JavaScript 前端 8月月更

同时将博客部署到github和conding

Five

前端 博客搭建 8月月更

软件测试 | 测试开发 | app自动化测试之Appium 原理 与 JsonWP 协议分析

测吧(北京)科技有限公司

json

如何应对突发的流量激增和服务器过载问题

NGINX开源社区

nginx 流量控制 高速缓存

如何选择靠谱的Java培训

小谷哥

前端高频面试题(四)(附答案)

helloworld1024fd

JavaScript 前端

【算法实践】他山之石,可以攻玉--利用完全二叉树快速实现堆排序

迷彩

Python 数据结构 算法 二叉堆排序 8月月更

Junit5 架构、新特性及基本使用(常用注解与套件执行)

霍格沃兹测试开发学社

PageObject(PO)设计模式在 UI 自动化中的实践总结(以 QQ 邮箱登陆为例)

霍格沃兹测试开发学社

Python 自动化测试(三): pytest 参数化测试用例构建

霍格沃兹测试开发学社

开源公开课丨ChengYing安装原理剖析

袋鼠云数栈

开源交流丨任务or实例 详解大数据DAG调度系统Taier任务调度

袋鼠云数栈

Jenkins 踩坑(四)|基于接口自动化测试完成 Jenkins+GitHub+Allure 的结合

霍格沃兹测试开发学社

开源新工具 Azure Developer CLI

Azure云科技

azure cli 应用程序 #开源

深度解读|关于SBOM最基础元素,你需要知道的(Part III)

安势信息

漏洞 漏洞扫描 代码安全 SBOM SBOM最基础元素

成长计划校园极客秀 | 玩转OpenHarmony开发智能煤气检测系统

OpenHarmony开发者

OpenHarmony

数字藏品系统开发:详细功能介绍

开源直播系统源码

NFT 数字藏品 数字藏品系统软件开发 NFT数字藏品系统

麦聪软件为云上客户提供DaaS服务,入驻国内Top3云市场

雨果

公有云私有云 DaaS数据即服务

Pb协议的接口测试

霍格沃兹测试开发学社

Python 自动化测试(五): Pytest 结合 Allure 生成测试报告

霍格沃兹测试开发学社

UI设计培训班出来后找工作吗?

小谷哥

大学毕业后如何选择大数据培训机构

小谷哥

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