写点什么

池化.NET 内存流以解决大内存堆分配问题

  • 2015-03-29
  • 本文字数:414 字

    阅读完需:约 1 分钟

与很多依赖于标记 - 清理的垃圾回收器的语言一样,C#也会在频繁分配内存或分配大块内存时产生性能问题。微软必应的高级软件开发工程师 Ben Watson,就曾在使用 MemoryStream 类的时候遇到了这种问题。在他的 Writing High-Performance .NET Code 一书中,他写道,

在某个饱受大量 LOH(大对象堆)分配之苦的应用中,我们发现如果将某种类型的对象保存在池中,就能解决 99% 的 LOH 问题。这个对象就是我们在网络中序列化和传输位的 MemoryStream。为了避免碎片,我们保存了一个 MemoryStream 对象的队列,尽管实际实现要复杂得多,但理论上来说基本如此。每次 MemoryStram 对象释放的时候,就将其放回池中以供复用。

在此之后微软将他的代码放到了 Microsoft.IO.RecycableMemoryStream类中。该类是传统的内存流的代替品。在最简单的情况下,可以用manager.GetStream代替new MemoryStream

注意这个流管理器是线程安全的,并且应该在进程中一直使用。

查看英文原文 Pooled Memory Streams for .NET

2015-03-29 08:564531
用户头像

发布了 59 篇内容, 共 23.3 次阅读, 收获喜欢 3 次。

关注

评论

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

[架构师训练营第 1 期] 大作业(二):架构师技术知识导图

猫切切切切切

爱了! Alibaba技术官甩出的“阿里内部Java成长笔记”,差距对比真的是不止一点点

Java架构之路

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

牛啤了!阿里技术官整理的这份《Java面试手册5000题》已经成功让数百名社招生“圆梦BATJ”

Java 编程 面试

架构师训练营第 1 期 - 第 12 周 - 学习总结

wgl

「架构师训练营第 1 期」

智能电车小白从入门到了解(Day1/28)

mtfelix

自动驾驶 28天写作 智能电车 电动汽车

jstat使用实用教程

JavaPub

Java JVM

SpringBoot系列1——概述和快速入门

程序员的时光

springboot 七日更 28天写作

架构师训练营第七周课后作业

万有引力

极客大学架构师训练营大作业

Meow

感谢 Gridea,让我有动力写作

和牛

程序员

极客大学架构师训练营大作业

Meow

MySQL中的哥哥表、妹妹字段,是什么鬼?

Java MySQL 数据库

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

Ian哥

28天写作

意识会在哪个早晨降落——「幻想短篇1/28」

道伟

28天写作

LeetCode题解:17. 电话号码的字母组合,BFS,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

腾讯T3面试官透露!360°深入了解Flutter,聪明人已经收藏了!

欢喜学安卓

android 程序员 面试 移动开发

喜提offer!支付宝Java研发岗四面,从基础到项目在到架构与业务

Java架构之路

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

架构师必会知识大合集:五位架构师手写于西溪园区的技术使用心得

Java架构之路

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

架构师第 3 课作业及学习总结

小诗

「架构师训练营第 1 期」

[架构师训练营第 1 期] 大作业(一):通达系统概要设计图

猫切切切切切

网络工程师职业指南

架构师训练营 1 期 - 第 十四周总结(vaik)

行之

「架构师训练营第 1 期」

MySQL慢查询(上):为啥会这么慢?

架构精进之路

MySQL MySQL优化 MySQL使用 28天写作

手把手教你如何巧用Github的Action功能

flutter android 持续集成

【薪火计划】08 - 非暴力沟通

AR7

管理 28天写作

缓存穿透,缓存击穿,缓存雪崩

en

redis 缓存穿透 缓存击穿 缓存并发

谬误词典:置信度

lidaobing

随机漫步的傻瓜 28天写作 谬误词典

关于拼多多价值的思考

.

28天写作

芯片破壁者(二十四):1987战役启示录

脑极体

架构师第 4 课作业及学习总结

小诗

「架构师训练营第 1 期」

资深大牛带你了解源码!阿里内部Android笔记火爆IT圈,醍醐灌顶!

欢喜学安卓

android 程序员 面试 移动开发

池化.NET内存流以解决大内存堆分配问题_.NET_Jonathan Allen_InfoQ精选文章