社区
C#
帖子详情
WCF 大数据量序列化占用内存高的问题
jinhuawu
2011-07-20 11:05:01
当我读取的数据量比较大的时候,占用的内存非常高。560多条数据。40个字段,20个字段有值,都是字符串的,平均20个字节左右。这时会占用120-150M内存,如果10个客户端每秒取560条数据,服务器内存都用到1G了。有什么方法能解决这个问题?
还有就是 我一次取 24W条数据,每条数据10个字段,每个字段10个字节,占用的内存为220M内存左右。
怎么能把内存降下来?
...全文
313
6
打赏
收藏
WCF 大数据量序列化占用内存高的问题
当我读取的数据量比较大的时候,占用的内存非常高。560多条数据。40个字段,20个字段有值,都是字符串的,平均20个字节左右。这时会占用120-150M内存,如果10个客户端每秒取560条数据,服务器内存都用到1G了。有什么方法能解决这个问题? 还有就是 我一次取 24W条数据,每条数据10个字段,每个字段10个字节,占用的内存为220M内存左右。 怎么能把内存降下来?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
机器人
2011-07-22
打赏
举报
回复
另外,只要没有出现OutOfMemory也没关系,GC没有立即回收也是正常的。
绿色夹克衫
2011-07-22
打赏
举报
回复
按理说转为文件流应该是可以的(不过可能会造成IO堵塞),占用相当于缓存大小的内存就可以,在内存里,也可以考虑用gzip之类的做压缩。另外lz用工具查查内存使用情况,感觉可能是没有及时释放内存造成的。
[Quote=引用 3 楼 jinhuawu 的回复:]
用流无法降低内存的使用率。只能提供传输的效率吧。。现在是用循环获取数据,单个用户访问能控制在20M以内。这样内存问题就解决了,因为我这里的生产环境是局域网,所以传输的问题并不明显。
这里占用内存注意是序列化的时候用的比较多,而我直接用的WCF的序列化,所以无法及时释放资源。不知道有无解决办法。不怎么想自己写序列化啊。。。
[/Quote]
mail_ricklee
2011-07-22
打赏
举报
回复
1 ProtoBuf
2 MessagePack
替代.Net自带的Xml序列化、反序列化
参考FortuneBase
参考地址www.cnblogs.com/mail-ricklee
机器人
2011-07-21
打赏
举报
回复
Streamed的话,lz的做法需要先变成MemoryStream,其实也还是一样的,个人以为Streamed可能更适合大IO操作。
控制下并发访问量,客户端稍微延迟点是否能够接受?
如果客户端性能不能降低,应该考虑用服务负载,用服务器集群。搭建多个WCF服务器来分摊查询压力。
比如:NLB集群
jinhuawu
2011-07-21
打赏
举报
回复
用流无法降低内存的使用率。只能提供传输的效率吧。。现在是用循环获取数据,单个用户访问能控制在20M以内。这样内存问题就解决了,因为我这里的生产环境是局域网,所以传输的问题并不明显。
这里占用内存注意是序列化的时候用的比较多,而我直接用的WCF的序列化,所以无法及时释放资源。不知道有无解决办法。不怎么想自己写序列化啊。。。
绿色夹克衫
2011-07-20
打赏
举报
回复
用流试试
WCF
传输
大数据
的
问题
转
使用
WCF
的默认DataContractSerializer手动去
序列化
成byte[],然后接收后再手动去反
序列化
,能解决这个
问题
。也就是说单纯的byte[]能过去,直接将下面代码中的list以List<May>返回去就是出现LZ遇到的
问题
。也就是说
序列化
与反
序列化
这一大块数据都没
问题
。主要
问题
还是出现在
WCF
组装消息上了。设置一下 ReaderQuotas 这个属性,这是设...
WCF
传输数据
量
大的
问题
解决方案:
WCF
承载项目的web.config里添加 以下是相关资料: http://bbs.csdn.net/topics/390322439?page=1#post-393257147 http://www.cnblogs.com/Mainz/arc
.NET的8种JSON
序列化
反
序列化
工具供你选择
在.NET开发中,.NET的JSON
序列化
反
序列化
工具除了Newtonsoft.Json和System.Text.Json其实还有很多优秀的开源的
序列化
和反
序列化
工具,这些工具有的性能更加优秀,更加轻
量
等特征。ServiceStack.Text是一个功能丰富的JSON
序列化
和反
序列化
库,支持多种
序列化
和反
序列化
方式。优点:它生成的
序列化
数据尺寸小、
序列化
和反
序列化
速度快,同时具有跨语言支持,使得在不同平台和技术堆栈中的应用程序可以进行
高
效的数据交换和通信。优点:快速、简单的JSON
序列化
和反
序列化
库;
.NET的8种JSON
序列化
反
序列化
工具,你都用过吗?
在.NET开发中,.NET的JSON
序列化
反
序列化
工具除了Newtonsoft.Json和System.Text.Json其实还有很多优秀的开源的
序列化
和反
序列化
工具,这些工具有的性能更加优秀,更加轻
量
等特征。本文将汇总介绍这些.NET中常用的JSON
序列化
和反
序列化
工具,供大家选择参考使用。1、Newtonsoft.Json (Json.NET)Newtonsoft.Json是.NET生...
Linux进程CPU排序,Linux TOP命令按
内存
占用
排序和按CPU
占用
排序
先输入top然后按P – 以 CPU
占用
率大小的顺序排列进程列表按M – 以
内存
占用
率大小的顺序排列进程列表top命令是Linux下常用的性能分析工具,比如cpu、
内存
的使用,能够实时显示系统中各个进程的资源
占用
状况,类似于Windows的任务管理器。top显示系统当前的进程和其他状况,是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程...
C#
110,533
社区成员
642,574
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章