作者huggie (huggie)
看板C_Sharp
标题Re: [问题] list memory usage
时间Sat Jun 9 21:21:21 2007
※ 引述《cole945 (躂躂..)》之铭言:
: 似乎不太正常@.@a
: 你可以用 Memroy Profile 来检查是什麽部份用了这麽大量的记忆体..
: 微软自己有给免费的 CLR Profile (含source)
(恕删)
Profiling 有点复杂..没看 documentation 我看我是看不懂的了
不过我的程式还蛮简单的..只是用 OpenFileDialog 选档,之後读档案就这麽大了
除了一个 List<string> 存最上面一行的 header 之外,另外就是 List<object[]>
(我改了),其他都是 local variable 应该会被 garbage collect,
但还是差不多接近500MB真是不可思议!
整个档案都是 ascii 所以似乎不需要用 utf-16,不过大部分的档案内容都是数字,
而且大部分都是小数字。所以,我想说读进来之後用 byte.TryParse() 转成 byte,
如果装不下 TryParse 会fail 再尝试 ushort.TryParse(),最後再用
Int32.TryParse()。如果都 fail 应该就是字串就直接存 string。这些都把它存在
object[] 里面然後存在 list里头。
不过好奇的是..我全部都用 Int32 或 String 装跟我用 byte, ushort, int, string
分装在记忆体大小上似乎没有差异呢! 都是用掉约 460,xxx K。原档案27,528行
如果把档案砍剩 10,001 行记忆体就只会用掉 188,xxx K。感觉..真的就是开档用掉的。
把程式 minimize 之後马上记忆体用得变少,我猜是因为 swap out 了吧。(我是用
工作管理员看的)
请问为什麽我改用 byte 装大部分数据资料没有比全用 Int32 装较省空间啊?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.129.77.13
1F:推 tomex:不能直接用File作Stream操作吗?这样就没记忆体负担了 06/10 04:16
2F:推 huggie:也是可以user选择再load要的column就好.但记忆体还是很好奇 06/11 18:29