50W个对象要占用大约200M的内存,怎么能把内存降下去,求助!在线等···· 解析一个文件,大概50M,约50W条数据,我要把每条数据转换成一个对象,把所有对象加到一个list里面,对象大概有七八个字段,然后针对这些字段的值进行查询计算操作,现在只要解析一次文件转换成对象就要耗掉200M的内存,求各位大神怎么解才能把内存降下去? 必须要全部信息存,不能只存主键···C# 内存太大 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 200M 内存真不算大了 这性能问题 代码上没什么可优化 无法就是分段 分量去操作数据了 我读3W 数据都消耗500M 内存 不过内存有1T 随便折腾 自动释放 "我要把每条数据转换成一个对象,把所有对象加到一个list里面"这就是内存消耗的原因.如果你咬死一定需要这样做"我要把每条数据转换成一个对象,把所有对象加到一个list里面"那么,此问题就是无解,确实就需要这么多内存.另外,该文件格式是什么?"读部分的话我要全量查询就没法做了····"全部查询,不需要全部载入,就像查询数据库中的表并不需要使用每次都Table Scan一样. 要性能就换电脑吧,我用400多元就可以配到主板为G41,4核3.2GCPU,4G内存的主板套装的,淘宝上有卖,你又何必在程序上纠结呢? 我记得 我曾经 做过 纯真IP库 的C# 解析;——纯真IP库的数据结构 就显得 标准得多:楼主 能不能用 内存偏移量 等算法 解析 FileStream ——这样就避免了 程序 加载全局数据的 尴尬。(FileStream 不会读取 全部字节 进入内存)——————————————————————————————————————————另外,实在不行,大不了 就将文件 一次存入数据库,用数据库查询 就简单多了。(文件的更新频率不高,一天 10次以内的更新,是绝对可以考虑的,你只需要 每隔一个小时 将新文件 重新导入数据库一次就行)——————————————————————————————————————————如果你存入 内存的 数据 50M文件没有再增加的可能性——就是说,内存没有再增加的可能性的话。你可以将 这 200M 缓存到内存中,不算什么——以后每次查询都读取内存 也是 功德一件。 目前服务器单条内存最大一般32G那么主板需要提供32条内存插槽才能满1TB,这位朋友搞it的不会连内存跟硬盘都分不清吧,1TB内存的主机,我第一次听说.自己接触过最大也就64GB的,8*4 32核cpu 呵呵 你还真oUT 了 一会给你截张图看看 现在都搞内存服务器了 21楼贴这个图出来,并不能说明1TB怎么样..我反而觉得这台服务器被浪费了... ...如果她是生产环境的服务器 2013-02-01 14:34:49 这个时间点,21楼贴图, CPU利用率是0%,内存是不到52G.这简直就是浪费,而且是超级浪费如果是开发测试环境,我不得不说21楼的公司钱真的很多....虽然内存烂大街了,CPU也不贵,但是也不能这样来浪费. 把你说的所有对象(对应一条记录)做成一个对象的一个泛型的字段,这样减少了对象的引用指针,但是其他的功能就要根据你的业务需要来增加了。不过感觉你的需求有不合理的嫌疑,把一大堆东西放在一个list里面没有意义啊,就如同不分页的浏览信息,“都看等于都不看”。 1TB 内存不奇怪Intel E7 -8800 系列处理器, 都是大家伙, 单处理器,10核20线程. 四路,就能40核80线程在 4 socket的主板上,也就是 4路处理器, 可最大支持 2TB 内存. 单条就可以32GB 50W个对象用LIST封装,找死么,内存开销太大,不用封装了,自己手写查询计算操作,这样平摊下来内存会少很多 不使用 class 用 struct 还能少点。 建议转成你熟悉的数据库,然后用SQL语句查询,这样效率非常高。当然,如果你是做考试题目,不让你用数据库,那我飘过算了 如果仅仅是要把内存降下去,可以试试定时调用Process.MaxWorkingSet 借助中间件嘛,如存在XML中,本地aceess中=======================================================.NET快速开发整合框架(RDIFramework.NET),基于.NET的快速开发、整合框架,给用户和开发者最佳的.Net框架部署方案。平台博客:[CNBLOGS]http://www.cnblogs.com/huyong [CSDN]http://blog.csdn.net/chinahuyong 交流QQ:406590790 (请注明:CSDN)平台微博:http://t.qq.com/yonghu86邮件交流:[email protected] 问一下使用EF时,配置文件中的数据库连接用户和密码如何加密? 向各位高手求一段从服务器上下载文件到本地并打开文件的代码,CS的 bindingsource 定位 C# 如何实现依次添加节点和元素 請教:有關RS232通訊問題 如何调用远程计算机上的系统服务? 关于通信的编程 程序调用释放资源时出现参数无效提示,明天就要上线了,,,求大神救命。。。。 有没有人知道怎样在安装程序里面生成一个本地数据库啊?? Font能不能序列化? Arraylist datatable数据量限制 C#基础问题
这性能问题 代码上没什么可优化 无法就是分段 分量去操作数据了
我读3W 数据都消耗500M 内存 不过内存有1T 随便折腾 自动释放
这就是内存消耗的原因.
如果你咬死一定需要这样做"我要把每条数据转换成一个对象,把所有对象加到一个list里面"
那么,此问题就是无解,确实就需要这么多内存.
另外,该文件格式是什么?
"读部分的话我要全量查询就没法做了····"
全部查询,不需要全部载入,就像查询数据库中的表并不需要使用每次都Table Scan一样.
另外,实在不行,大不了 就将文件 一次存入数据库,用数据库查询 就简单多了。(文件的更新频率不高,一天 10次以内的更新,是绝对可以考虑的,你只需要 每隔一个小时 将新文件 重新导入数据库一次就行)——————————————————————————————————————————
如果你存入 内存的 数据 50M文件没有再增加的可能性——就是说,内存没有再增加的可能性的话。
你可以将 这 200M 缓存到内存中,不算什么——以后每次查询都读取内存 也是 功德一件。
那么主板需要提供32条内存插槽才能满1TB,
这位朋友搞it的不会连内存跟硬盘都分不清吧,
1TB内存的主机,我第一次听说.
自己接触过最大也就64GB的,8*4 32核cpu
一会给你截张图看看 现在都搞内存服务器了
我反而觉得这台服务器被浪费了... ...
如果她是生产环境的服务器
2013-02-01 14:34:49 这个时间点,21楼贴图,
CPU利用率是0%,
内存是不到52G.
这简直就是浪费,而且是超级浪费如果是开发测试环境,我不得不说21楼的公司钱真的很多....虽然内存烂大街了,CPU也不贵,但是也不能这样来浪费.
在 4 socket的主板上,也就是 4路处理器, 可最大支持 2TB 内存. 单条就可以32GB
内存开销太大,不用封装了,自己手写查询计算操作,这样平摊下来内存会少很多
.NET快速开发整合框架(RDIFramework.NET),基于.NET的快速开发、整合框架,给用户和开发者最佳的.Net框架部署方案。
平台博客:[CNBLOGS]http://www.cnblogs.com/huyong
[CSDN]http://blog.csdn.net/chinahuyong
交流QQ:406590790 (请注明:CSDN)
平台微博:http://t.qq.com/yonghu86
邮件交流:[email protected]