Re: [問題] list memory usage

看板C_Sharp (C#)作者 (huggie)時間18年前 (2007/06/09 21:21), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串3/3 (看更多)
※ 引述《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

06/10 04:16, , 1F
不能直接用File作Stream操作嗎?這樣就沒記憶體負擔了
06/10 04:16, 1F

06/11 18:29, , 2F
也是可以user選擇再load要的column就好.但記憶體還是很好奇
06/11 18:29, 2F
文章代碼(AID): #16QgbIN8 (C_Sharp)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):
文章代碼(AID): #16QgbIN8 (C_Sharp)