写点什么

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

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

关注

评论

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

架构师训练营第2期 第11周命题作业

月下独酌

软件架构设计方案实战

Andy

这样规范写代码,同事直呼“666”

xcbeyond

Java 代码规范 规范

与前端训练营的日子 --Week10

SamGo

学习

console.log也能插图!!!

德育处主任

CSS html 大前端 Web js

消息队列优化(1) -- 鶸的介绍篇

1412

消息队列 workflow srpc 异步调度 并行计算

呃?!!!我彻底忘了这件事😂

Nydia

消息队列优化(2) -- 几种基本实现

1412

消息队列 workflow srpc 异步调度 并行计算

消息队列优化(3) -- grpc MPMCQueue 简介及各队列性能对比

1412

消息队列 workflow srpc 异步调度 并行计算

判断回文数字算法,swift 5初始化详解,时间管理计划落地,swift5 多线程高级用法 John 易筋 ARTS 打卡 Week 33

John(易筋)

ARTS 打卡计划 算法回文数字判断 时间管理计划落地 swift5 初始化详解 swift5多线程高级用法

第 11 周 系统架构作业

心在那片海

微服务缓存原理与最佳实践

万俊峰Kevin

缓存 缓存穿透 缓存并发 go-zero Go 语言

江苏民丰 x mPaaS | 县域小银行,技术团队就12人,却找到了数字化转型的秘籍

蚂蚁集团移动开发平台 mPaaS

银行数字化转型 mPaaS

AI人脸识别技术门禁系统解决方案智慧社区建设

13828808769

人脸识别 智慧城市 智慧平安小区平台开发 刷脸

曲折!目标腾讯,字节,拼多多;最后居然五面进了阿里?

Java架构之路

Java 程序员 架构 面试 编程语言

Week 11 作业

evildracula

第 11 周 系统架构总结

心在那片海

Week1 作业

oooh-la

2020年国内前端团队都做了些什么?

徐小夕

大前端 技术栈 2021

开源整套Netty源码笔记+19个案例调优+游戏项目,终于彻底顿悟了

Java架构追梦

Java 源码 架构 Netty 游戏项目

架构师第一周总结



架构师 01 期,大作业一

子文

万字长文聊缓存(上)

Silently9527

Java nginx HTTP

重学JS | 数组知识点大全,必收藏!

梁龙先森

大前端 编程语言

UDP连接要不要发起connect

kof11321

网络编程

谁说明天上线,这货压根不知道开发流程!

小傅哥

Java 小傅哥 架构设计 开发流程 开发规范

我画了 40 张图就是为了让你搞懂计算机网络层

苹果看辽宁体育

计算机网络 IP 网络层 ipv6 ipv4

十一、高可用

Geek_28b526

关于一个梦(自我的死亡)

Yuchen

身心健康 心理 自我

面试官:数据库自增ID用完了会怎么样?

艾小仙

数据库

完美!华为爆出Redis宝典,原来Redis性能可压榨到极致

996小迁

redis 架构 面试 资料

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