写点什么

池化.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:564562
用户头像

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

关注

评论

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

第十三周 学习总结

熊桂平

极客大学架构师训练营

还记得你的时间胶囊吗?

熊斌

个人成长 七日更

源码解析Synchronized同步方法的八种使用场景,收藏

小Q

Java 学习 架构 面试 多线程

Java并发编程:AQS的互斥锁与共享锁

码农架构

Java Java并发

23 种设计模式的有趣见解

xcbeyond

设计模式 七日更

BitQy交易所软件系统开发|BitQy交易所APP开发

iOS 崩溃分析

ios 崩溃分析

SQL:我为什么慢你心里没数吗?

Java架构师迁哥

IPFS质押挖矿系统开发方案

必须清除互联网世界的毒瘤:网络谣言背后存在病态心理

石头IT视角

带宽、延时、吞吐率、PPS 这些都是啥?

小林coding

Linux 操作系统 网络

智慧平安小区搭建,智慧社区综合服务平台开发

t13823115967

智慧城市 智慧社区管理平台开发

天源迪科获2020年度中国产业供应链(中央企业集采供应链)百强企业荣誉

DT极客

完全懵掉的电话面试

escray

面试 面经 七日更 十日谈

区块链商城系统开发模式制作

盘点2020 | 云上建站流程全解,教你如何节约成本

老魚

云服务器 建站 盘点2020 web全栈

区块链多币种钱包app系统开发

源码输出纯净版SSM架构,收藏直接CV使用它不香吗?

小Q

Java 学习 编程 面试 ssm

堪称完美!阿里架构师亲自手撕”Spring Boot实战笔记“用60个案例给你整的明明白白

比伯

Java 编程 程序员 架构 技术宅

源码解析Synchronized同步方法的八种使用场景,收藏

996小迁

Java 源码 架构 面试 synchronized

区块链钱包软件系统开发及费用

区块链交易所系统开发,合约交易模式软件方案

Spring Cloud微服务实战

田维常

微服务

菜鸟实时数仓2.0进阶之路

Apache Flink

flink 流计算

IDC发布2021年中国云计算10大预测;Docker 桌面为 M1 推出技术预览版

京东科技开发者

云计算 AI 程序人生

2020年,关于【区块链运营】工作的11条思考

猫Buboo

比特币 区块链+

【年终总结】mybatis常见注解

田维常

mybatis

智慧公安防控管理,重点人员管控系统建设方案

t13823115967

智慧公安 情报研判系统建设

RPC 核心,万变不离其宗

yes

Java 微服务 后端 RPC

Kafka的控制器controller详解

数据社

kafka 七日更

秒杀系统设计的挑战和问题(转载)

jorden wang

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