写点什么

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

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

关注

评论

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

架构师系列 13 Spark 大数据处理在金融领域中的应用

桃花原记

面试官:换人!赶快换人!连 CopyOnWriteArrayList 都没听过!

xcbeyond

Java 28天写作 CopyOnWriteArrayList

Java程序经验小结:谨慎的使用本地方法

后台技术汇

28天写作

python自学 第一章 初始python

WEB前端修行日志

Python

week7-总结

J

Java并发编程实战(3)- 互斥锁

技术修行者

Java 并发编程 多线程

新官上任,如何开始你的管理工作(上)

一笑

管理 28天写作

4.5万字手把手教你实现MySQL TB级数据存储!!

冰河

MySQL 分布式 微服务 数据存储 mycat

微信视频号的不同 | 视频号28天(03)

赵新龙

28天写作

Java Kafka 简单示例

Java kafka

技术人小故事-团队愿景篇-第2段

Ian哥

28天写作

中华石衫 Elasticsearch 顶尖高手系列课程

escray

elasticsearch elastic 28天写作 死磕Elasticsearch

Windows10 Kafka Docker 集群搭建

Docker kafka

架构师培训第二周课后作业

跳蚤

HDFS SHELL详解(3)

罗小龙

hadoop 28天写作 hdfs shell

第七周 性能优化作业

简简单单

RocketMQ如何保证消息可靠性

废材姑娘

RocketMQ

week7-homework

J

MySQL慢查询(下):问题解决,干货总结

架构精进之路

MySQL MySQL 高可用 MySQL优化 28天写作

第12周作业

Jack

有关架构设计原则的总结

跳蚤

从大局着眼,立微处发力

张老蔫

28天写作

第七周 学习总结

简简单单

生产环境全链路压测建设历程 25:FAQ 7、8 正常业务保护和外调接口的处理

数列科技杨德华

28天写作

大作业2

蓝黑

汽油车最简知识——28天写作Day2/28

mtfelix

28天写作 电动汽车

堡垒机是什么?

数仓面试高频考点--解决hive小文件过多问题

五分钟学大数据

大数据 hive 面试 数仓

创业也是要帮助他人突破认知 Jan 10, 2021

王泰

28天写作

反对没有节制的加班文化

熊斌

管理 职场 工作思路 28天写作

程序员练习算法的几个实用技巧

Phoenix

算法

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