阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

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

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

关注

评论

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

MySQL系列(一):MySQL深入学习先导篇之基础架构

z小赵

MySQL 数据库

再见C++

Sunny.

c++ 踩坑

暴雪员工抗议薪酬不公,部分员工称甚至难以维持生计

程序员生活志

职场

Linux Page Cache调优在Kafka中的应用

vivo互联网技术

大数据 kafka

如何选择一台打印机

别把虾米不当海鲜

史上最强DIY,手工制作一只会说话的机器狗

华为云开发者联盟

聊天机器人 nlp 华为云 语言识别 语言合成

卡丁车的后轴是如何做到差速的?

TGP大跨步

科普 卡丁车 TGP 大跨步 素材

一文读懂jar包的小秘密

程序那些事

Java jar jar包的小秘密 java解密

3 分钟生成一个单元测试报告,这个样式爱了

程序员小富

Java 测试

如何使 Grafana as code

郭旭东

翻译 Grafana

[8.20]leetcode每日一题,

一起搞稽

算法 DFS

他被称为"中国第一程序员",一人之力单挑微软!真牛!

程序员生活志

芯片破壁者(十三):台湾地区半导体的古史新证

脑极体

终于可以职业规划了么?

escray

学习 面试

一看就懂的三次握手

书旅

TCP 三次握手 操作系统 协议族

我以后去做什么,技术还是业务?

escray

学习 面试 职业规划

联邦学习初识

soolaugust

学习

a站、b站、c站、d站、e站、f站、g站、h站、i站、j站、k站、l站、m站、n站…z站?

程序员生活志

【API进阶之路】逆袭!用关键词抽取API搞定用户需求洞察

华为云开发者联盟

接口 软件开发 API 华为云 API Explorer平台

一行错误代码:5 亿美元没了。。。项目关闭。。。

程序员生活志

我喜欢的工作,喜欢我么?

escray

学习 面试

Centos7下service配置知识

28岁硕士女程序员想分手!对象专科学历,北京土著,失业3个月找不到工作!遭网友群嘲!

程序员生活志

程序员

90后程序员小姐姐在线征婚!年薪70w!拥有五套房!她却担心自己因为年龄大嫁不出去!

程序员生活志

程序员

大数据技术发展(三):Spark 代替 Hadoop ? Spark Or Flink ?

cristal

Java 大数据 flink hadoop spark

一个@Transaction哪里来这么多坑?

程序员DMZ

spring 事务 读写分离

性能全开的十代酷睿,造就惠普光影精灵 6 的电竞燃魂

最新动态

SpreadJS 应用案例:电力自动化在线数据采集报表系统

葡萄城技术团队

SpreadJS 电力 报表

【Elasticsearch 技术分享】—— Elasticsearch ?倒排索引?这都是什么?

程序员小航

elasticsearch ELK 倒排索引 ES 技术分享

星火PLUS交易所打造无边界数字经济联盟,掀起币圈追捧热潮

InfoQ_967a83c6d0d7

Docker 的前世今生

哈喽沃德先生

Docker 容器 微服务 虚拟化

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