写点什么

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

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

关注

评论

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

NodeJs 全栈创建多文件断点续传

devpoint

大前端 upload 引航计划 10月月更

什么是机器学习, CNN TensorFlow by Google神经网络深度学习 易筋 ARTS 打卡 Week 69

John(易筋)

ARTS 打卡计划

架构实战营模块九作业

maybe

【初恋系列】我轻轻的走了,正如我轻轻的来(微博评论实战)

人工智能~~~

高可用 高性能 微博评论架构实战

linux之history命令

入门小站

Linux

009云原生之分布式事务模式

穿过生命散发芬芳

云原生 10月月更

模块五作业

Geek_fc100d

「架构实战营」

惊艳!阿里出产的MyCat性能笔记,带你领略什么叫细节爆炸

Java 架构 面试 程序人生 编程语言

Zabbix VS Prometheus :哪个更适合你

耳东@Erdong

后端 Prometheus zabbix 引航计划 10月月更

金九银十旗开得胜!秋招字节正式批4面,顺利拿到offer

Java 架构 面试 程序人生 编程语言

12道Zookeeper高频面试题,你顶得住吗?

Java 架构 面试 分布式 后端

面试进阶必备:“阿里爸爸”高并发秒杀架构设计笔记(全彩版)

Java 架构 面试 程序人生 编程语言

这份笔记太牛了!手把手教你从零开始搭建Spring Cloud Alibaba!

Java 架构 面试 程序人生 编程语言

大数据作业Spark sql

Clarke

大前端:入门CSS的编程世界~

Bob

CSS 大前端 引航计划

从零开发一款Android Rtmp播放器

轻口味

android 音视频 引航计划 10月月更

🏆【Alibaba工具型技术系列】「EasyExcel技术专题」实战技术针对于项目中常用的Excel操作指南

码界西柚

Excel EasyExcel Alibaba Alibaba技术 10月月更

模块六作业

Geek_fc100d

「架构实战营」

为什么感觉假期还没开始就快要结束了?

脑极体

Python代码阅读(第33篇):反转字典

Felix

Python 编程 Code Programing 阅读代码

Spark 系列教程(2)运行模式介绍

Se7en

(深入篇)漫游语音识别技术—带你走进语音识别技术的世界

攻城先森

深度学习 音视频 nlp 语音识别

自我提升:方法探索

程序员架构进阶

自我管理 时间管理 自我提升 10月月更

在线RGB和HEX十六进制颜色互转工具

入门小站

工具

【Flutter 专题】36 图解 Flutter 基本动画 (一)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 10月月更

靠这份GitHub star过万的1121页图解算法成功杀进字节跳动

Java 架构 面试 程序人生 编程语言

金九银十一线大厂Java面试题大全(整理版)1000+面试题附答案详解,最全面详细!

Java 程序员 架构 面试 后端

【Vuex 源码学习】第八篇 - Vuex 对 State 状态的处理

Brave

源码 vuex 10月月更

音视频全链路开发实践|引航计划|音视频

轻口味

音视频 引航计划 内容合集 技术专题合集

Android平台音视频实战|引航计划|音视频

轻口味

音视频 引航计划 内容合集 技术专题合集

私有云部署系列之动态IP获取(程序编写)

稻草鸟人

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