解决.net的堆碎片化带来的内存占用过大的问题
场景
使用WCF开发的服务端在多个客户端登录后,其服务器的内存占用不断增加。
分析
使用Windbg分析得到内存碎片化严重,其中包含了非常大的空闲空间,最大的一块竟然有150M,真正使用的空间其实很小。若无限地任其扩大,之后应该会由于在大内存中查找对象的效率低而造成程序运行缓慢。
大的碎片后的对象类型主要是:System.ServiceModel.Channels.OverlappedContext和System.Byte[],并且使用对象引用跟踪大碎片后的System.Byte[]对象,发现也是WCF的连接相关对象。猜想这些对象可能在内存中被pin住。
如果能限制新创建的对象在空闲内存中分配就好了,可惜.net并没有提供这样的方式。
或者如果可以重写System.ServiceModel.Channels.OverlappedContext的创建,那么就可以在应用程序启动时预先申请一块内存,将对象全在这块内存中创建。
解决
在应用程序启动时限制最大工作集内存(当前限制为约1G。还可以根据实际的业务压力实时地调整这个值的大小)
System.Diagnostics.Process.GetCurrentProcess().MaxWorkingSet = (IntPtr)1000000000;
参考
Large Object Heap fragmentation causes OutOfmemoryException
利用进程工作集MaxWorkingSet,限制.NET程序的内存占用
解决.net的堆碎片化带来的内存占用过大的问题的更多相关文章
- 解决iis内存占用过大的问题--ZT
解决iis内存占用过大的问题 在IIS6下,经常出现w3wp的内存占用不能及时释放,从而导致服务器响应速度很慢. 今天研究了一下,可以做以下配置: 1.在IIS中对每个网站进行单独的应用程序池配置.即 ...
- 64位进程调用32位dll的解决方法 / 程序64位化带来的问题和思考
最近做在Windows XP X64,VS2005环境下做32位程序编译为64位程序的工作,遇到了一些64位编程中可能遇到的问题:如内联汇编(解决方法改为C/C++代码),long类型的变化,最关键的 ...
- vue+ivew-admin开发项目,内存占用过大解决办法
项目用的ivew+admin ivewUI,直接从github上拉下来用的,配置也没改,我们页面比较多,大该30个页面的样子,一启用,我们的电脑就卡了,然后,看一下,内存占用 1.5G+了,我们电脑4 ...
- 解决Tomcat catalina.out 不断膨胀,导致磁盘占用过大的问题
到服务器上看了一下任务中心的日志情况,膨胀的很快,必须采取措施限制其增长速度. 我们采用Cronlog组件对此进行日志切分,官网http://cronolog.org/一直未能打开,只能从其它地方寻找 ...
- 计算机内存碎片(中)——外部碎片化(内存 & 文件系统 & 数据库系统通杀)
本文原创为freas_1990,转载请标明出处:http://blog.csdn.net/freas_1990/article/details/17252221 外部碎片化 当计算机内存被划分成很细碎 ...
- 巨杉Talk | 拒绝数据碎片化,原生分布式数据库灵活应对数据管理需求
2019年7月19-20日,以“运筹帷幄,数揽未来”为主题的DAMS中国数据智能管理峰会在上海青浦区成功举办.在DAMS峰会上,巨杉数据库为大家带来了题为“云架构下的分布式数据库设计与实践”的主题分享 ...
- 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
腾讯优测是专业的android自动化测试平台,拥有上千款真机,彻底解决android碎片化问题! 这里我要说的不是闪光灯的硬件特征,也不是说底层驱动的原理,我只是跟大家聊一聊在项目中遇到的一些关于闪光 ...
- 碎片化时代:O2O服务成最大趋势
从86年第一封电子E-Mail发出至今28个年头,中国互联网从单一点对点,点对多,多对多,如今又回归到点对点,从最基础的Mail.黄页应用到基于互动的Search.Blog以及基于满足人类基本需求的沟 ...
- 谷歌强制厂商升级KitKat 仍无法改善安卓碎片化
据一份泄露的内部文档显示,谷歌计划推出新的Android版本及设备审批条例,限制硬件制造商推出Android 4.4 KitKat以下的旧版本硬件,来改变平台碎片化现象.如果厂商一意孤行,继续推出搭载 ...
随机推荐
- 获取ocx运行路径的另一种方法
在InitInstance里边可以获取 1 2 3 4 5 6 7 8 9 10 11 12 if (bInit) { // TODO: 在此添加您自己的模块初始化 ...
- VS2012配置astyle格式化代码
1.工具->扩展和更新,搜astyle插件,下载安装重启,当前是2.0版本. 2.工具->选项->AStyle Formatter->Edit,填入下面的,点击save,确定. ...
- SVN的项目管理
基于SVN的项目管理——集中与分散 我们在此处不讨论 GIT 比 SVN 好多少,也不讨论 Maven 和 Gradle 哪个好用,基于现有的开发环境,大多数公司还是采用 SVN + Maven ...
- 腾讯文学动作密集 疑为手Q发力移动阅读铺路
移动互联网的门票之争并未结束,百度收购91无线,阿里投资新浪微博.UC浏览器,网易推易信.云音乐等等,都是互联网巨头争夺移动互联网门票的最佳案例.不过,上述任何巨头都不可忽视腾讯这个“狠角色” ...
- 百度GPSutil
================================================= package com.qcar.benz.biz.common; import com.aliba ...
- 10105 - Polynomial Coefficients
描述:杨辉三角与二项式定理 #include <cstdio> int solve(int n,int m) { int sum=1; for(int i=n; i>m; --i) ...
- A Game of Thrones(17) - Bran
It seemed as though he had been falling for years. Fly, a voice whispered in the darkness, but Bran ...
- C++ Primer中文版(第5版)
<C++ Primer中文版(第5版)> 基本信息 作者: (美)Stanley B. Lippman(斯坦利 李普曼) Josee Lajoie(约瑟 拉乔伊) Barbar ...
- java的url
中国的争论导致了扭曲
话不多说,,直接粘代码 发件人 UrlParaCode.jsp <%@ page language="java" import="java.util.*" ...
- nginx 301跳转到带www域名方法rewrite(转)
首先一.得在你的域名管理里面定义 test.com和www.test.com指向你的主机ip地址,我们可以使用nslookup命令测试:直接输入 nslookup test.com和nslookup ...