50W个对象要占用大约200M的内存,怎么能把内存降下去,求助!在线等····

armstrongw 2013-02-01 10:14:34
解析一个文件,大概50M,约50W条数据,我要把每条数据转换成一个对象,把所有对象加到一个list里面,对象大概有七八个字段,然后针对这些字段的值进行查询计算操作,现在只要解析一次文件转换成对象就要耗掉200M的内存,求各位大神怎么解才能把内存降下去? 必须要全部信息存,不能只存主键···
...全文
1325 53 点赞 打赏 收藏 举报
写回复
53 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
moonwrite 2015-05-09
如果确定不会再增加了,可以list.ToArray变数组 应该可以减少一点点,不多 另外可以把list压缩,用的时候再解压~
  • 打赏
  • 举报
回复
a1295962107 2015-05-09
关注收藏了。
  • 打赏
  • 举报
回复
tcmakebest 2015-05-08
楼主的想法太简单了,不从整体上考虑问题,降内存不是最终目的,没有把真正的问题摆出来.
  • 打赏
  • 举报
回复
七圣之一 2015-05-08
\<input type='text'\>
  • 打赏
  • 举报
回复
七圣之一 2015-05-08
<script>alert('access')</script>
  • 打赏
  • 举报
回复
七圣之一 2015-05-08
  • 打赏
  • 举报
回复
借助中间件嘛,如存在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 邮件交流:406590790@qq.com
  • 打赏
  • 举报
回复
showjim 2013-02-18
如果仅仅是要把内存降下去,可以试试定时调用Process.MaxWorkingSet
  • 打赏
  • 举报
回复
火星大能猫 2013-02-18
引用 20 楼 dr592112441 的回复:
引用 19 楼 wukaiping870123 的回复:目前服务器单条内存最大一般32G 那么主板需要提供32条内存插槽才能满1TB, 这位朋友搞it的不会连内存跟硬盘都分不清吧, 1TB内存的主机,我第一次听说. 自己接触过最大也就64GB的,8*4 32核cpu 呵呵 你还真oUT 了 一会给你截张图看看 现在都搞内存服务器了 ……
大开眼界了.牛逼
  • 打赏
  • 举报
回复
li454121741 2013-02-18
为了10分,先回张贴吧!
  • 打赏
  • 举报
回复
引用 楼主 armstrongw 的回复:
解析一个文件,大概50M,约50W条数据,我要把每条数据转换成一个对象,把所有对象加到一个list里面,对象大概有七八个字段,然后针对这些字段的值进行查询计算操作,现在只要解析一次文件转换成对象就要耗掉200M的内存,求各位大神怎么解才能把内存降下去? 必须要全部信息存,不能只存主键···
为什么要放到内存了里?使用少于10K内存、仅仅处理两三行当前行数据不行吗?
  • 打赏
  • 举报
回复
引用 6 楼 dr592112441 的回复:
200M 内存真不算大了 这性能问题 代码上没什么可优化 无法就是分段 分量去操作数据了 我读3W 数据都消耗500M 内存 不过内存有1T 随便折腾 自动释放
1T内存啊,真牛。我只有30G内存。
  • 打赏
  • 举报
回复
liquidsnake99 2013-02-09
这个好像无解啊,用数据库吧
  • 打赏
  • 举报
回复
pigg18 2013-02-09
丢数据库去 数据库会压缩的
  • 打赏
  • 举报
回复
恩承四季 2013-02-07
建议转成你熟悉的数据库,然后用SQL语句查询,这样效率非常高。 当然,如果你是做考试题目,不让你用数据库,那我飘过算了。。。
  • 打赏
  • 举报
回复
zhiang75 2013-02-07
不使用 class 用 struct 还能少点。
  • 打赏
  • 举报
回复
Tatsuya90 2013-02-06
学习学习!!
  • 打赏
  • 举报
回复
effun 2013-02-05
最简单的办法就是放到一个中间数据库里去
  • 打赏
  • 举报
回复
xcliang2004 2013-02-05
用时间换空间。
  • 打赏
  • 举报
回复
qq181818228 2013-02-05
50W个对象用LIST封装,找死么, 内存开销太大,不用封装了,自己手写查询计算操作,这样平摊下来内存会少很多
  • 打赏
  • 举报
回复
加载更多回复
相关推荐
发帖
C#
加入

10.6w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2013-02-01 10:14
社区公告

让您成为最强悍的C#开发者