2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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

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

关注

评论

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

Java高级软件工程师面试题,java菜鸟教程多态,Java程序员面试笔记pdf

Java 程序员 后端

kafka入门与实践百度云,牛客网平安科技,和快手大牛的技术面谈

Java 程序员 后端

kafka入门教程,linux教程第四版pdf下载,mysql基础教程

Java 程序员 后端

kafka实战最佳经验,牛客网华为机试题答案,Java开发面试问题

Java 程序员 后端

linux基础入门知识,kafka入门教程步骤,2021年Java网络编程总结篇

Java 程序员 后端

JDK、JRE与JVM的区别与联系,springmvc基础知识pdf下载

Java 程序员 后端

jvm常见面试题,图灵it教育学院多大,这个框架直接干掉了Servlet

Java 程序员 后端

kafka教程pdf,spring入门教程,你会的还只有初级工程师的技术吗

Java 程序员 后端

linux内核教程推荐,兄弟连尚硅谷,顺利收获Offer

Java 程序员 后端

linux应用开发面试题,java黑马程序员资源,如何保证redis高可用

Java 程序员 后端

Mybatis-plus常用API全套教程,springcloud实战视频

Java 程序员 后端

Java高级面试手册,架构师修炼之道pdf百度云,Java开发实战经典答案

Java 程序员 后端

JVM虚拟机原理深入解析,springboot实战视频教程百度云,你不懂还不学?

Java 程序员 后端

Java高级技术经理面试题,西安尚学堂教育,已开源下载

Java 程序员 后端

kafka入门教程,springboot高级教程,聊聊你对分布式锁技术方案的理解

Java 程序员 后端

Mybatis-Plus的使用小技巧,linux数据恢复教程,Nginx面试

Java 程序员 后端

jvm常见面试题,尚硅谷和黑马,2021国内知名大厂Java岗面经

Java 程序员 后端

linux内核教程推荐,尚硅谷mysql,一文轻松搞定

Java 程序员 后端

Java高级知识体系,java性能调优实战网盘,大厂首发

Java 程序员 后端

Java高级知识体系,kalilinux新手教程,Java实习面试经验汇总

Java 程序员 后端

JVM面试题附答案,Dubbo高频面试题+解析

Java 程序员 后端

Java高级开发面试视频,nginx教程pdf,linux初学者入门书籍

Java 程序员 后端

Java高级技术架构,linux操作系统教程海南师范大学,nginx入门书籍推荐

Java 程序员 后端

kafka面试题阿里,牛客网面试题库java,农民工看完都会了

Java 程序员 后端

linux基础教程试题,linux驱动程序开发视频教程,netty入门与实战

Java 程序员 后端

Java高级工程师面试题目,尚硅谷kafka文档,和腾讯大牛的技术面谈

Java 程序员 后端

Java高级架构师面试题,李玉婷尚硅谷漂亮,程序员怎样优雅度过35岁中年危机

Java 程序员 后端

linux应用开发面试题,极客时间破解付费课程百度云盘,Java面试官

Java 程序员 后端

mybatis入门案例,图灵学院第三期视频百度云,阿里中间件

Java 程序员 后端

Kafka必须掌握的核心技术,尚硅谷java入门,Nginx面试

Java 程序员 后端

linux学习笔记,springboot前后端分离教程,我先收藏为敬

Java 程序员 后端

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