写点什么

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

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

关注

评论

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

每日一题:LeetCode-297. 二叉树的序列化与反序列化

Geek_4z9ami

面试 算法 LeetCode 二叉树 DFS

如何正确利用Google开辟海外市场

九凌网络

2024年了,为什么我还是舍弃不掉 RSS?

伤感汤姆布利柏

可视化大屏是什么?大屏数据可视化设计指南

2D3D前端可视化开发

数据可视化 大屏可视化 可视化大屏 可视化设计

阿里云云原生弹性方案:用弹性解决集群资源利用率难题

阿里巴巴云原生

阿里云 云原生 弹性

Google推广之关键字匹配类型

九凌网络

腾讯云ES RAG最佳实践:向量+文本混合搜索的相关性调优

腾讯云大数据

ES

0.o?让我看看怎么个事儿之SpringBoot自动配置

不在线第一只蜗牛

spring 后端 springboot 后端开发

FeatInsight: 基于 OpenMLDB 的特征平台助力高效的特征管理和编排

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

构建坚固网络,SD-WAN网络配置指南

Ogcloud

SD-WAN SD-WAN组网 SD-WAN服务商

文心一言 VS 讯飞星火 VS chatgpt (181)-- 算法导论13.4 4题

福大大架构师每日一题

福大大架构师每日一题

跨境电商的税收政策:卖家需关注的合规问题

技术冰糖葫芦

云原生微服务:现代化应用开发的支柱

不在线第一只蜗牛

微服务 云原生 架构开发

美的楼宇科技携手火山引擎,共筑边缘云新型生态圈

火山引擎边缘云

边缘计算 智慧园区 智慧建筑 边缘云

语音数据集在智能语音助手中的应用与挑战

来自四九城儿

数字生态系统的演进与企业API管理的关键之路

幂简集成

API API 管理 API Hub

打破束缚,重塑软件定制开发效率与质量

SoFlu-JavaAI开发助手

【干货分享】常用的Python开发工具比较

快乐非自愿限量之名

Python 开发 开发语言

1688商品数据API接口的数据分析与挖掘技巧

Noah

给科研人的 ML 开源发布工具包

EquatorCoco

开源 ML 工具包 安装包

聚道云如何助力企业破解审批困境,开启高效工作?

聚道云软件连接器

案例分享

AI智能大模型与低代码:现代应用开发的潮流趋势

EquatorCoco

人工智能 低代码 AI模型 智能模型

自助式可视化开发,ETLCloud的集成之路

RestCloud

可视化 ETL

SD-WAN组网设计原则:灵活、安全、高效

Ogcloud

SD-WAN SD-WAN组网 SD-WAN服务商

Spring Boot 单体应用升级 Spring Cloud 微服务

阿里巴巴云原生

阿里云 云原生 Spring Cloud

左耳听风 - 编程的本质「读书打卡 day 10」

Java 工程师蔡姬

读书笔记 程序员 个人成长 编程的本质 职业发展

使用函数计算,数禾如何实现高效的数据处理?

阿里巴巴云原生

阿里云 Serverless 云原生

Milvus 上新:支持上万个 Collection、新增 Accesslog 功能……

Zilliz

非结构化数据 Milvus Zilliz 向量数据库

SD-WAN企业组网场景深度解析

Ogcloud

SD-WAN SD-WAN组网 SD-WAN服务商

智能语音助手在医疗行业的应用与挑战

来自四九城儿

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