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

armstrongw 2013-02-01 10:14:34
解析一个文件,大概50M,约50W条数据,我要把每条数据转换成一个对象,把所有对象加到一个list里面,对象大概有七八个字段,然后针对这些字段的值进行查询计算操作,现在只要解析一次文件转换成对象就要耗掉200M的内存,求各位大神怎么解才能把内存降下去? 必须要全部信息存,不能只存主键···
...全文
1471 53 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
53 条回复
切换为时间正序
请发表友善的回复…
发表回复
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封装,找死么, 内存开销太大,不用封装了,自己手写查询计算操作,这样平摊下来内存会少很多
加载更多回复(31)

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

试试用AI创作助手写篇文章吧