[問題] 請問有關於ArrayList 的最大極限
不好意思 小弟想請教一下ArrayList是否有使用上之極限的問題,由於小弟現在需要讀取
約200MB 內含約249429840個數值的二進位檔案,作業環境是在XP底下, 由於有套用其
他函式庫的關係,只能在XP底下執行
FileStream fs = new FileStream(openFileDialog1.FileName,
FileMode.Open);
BinaryReader br = new BinaryReader(fs);
int nBytes = Convert.ToInt32(fs.Length);
odf = new float[nBytes / 1284][];
for (int i = 0; i < nBytes / 1284; i++)
{
odf[i] = new float[642];
}
ArrayList SmallArray = new ArrayList();
for (int o = 0; o < nBytes / 1284; o++)
{
for (int j = 0; j < 321; j++)
{
SmallArray.Add(br.ReadSingle());
odf[o][j] = Convert.ToSingle(SmallArray[j + 321 * o]);
}
資料存取方面則是在存取全部數值時會有錯誤,已經嘗試過可以讀取總數為77040000個數
值的檔案 但讀取全部檔案時候
便會再SmallArray.Add(br.ReadSingle()); 出現out of memory exception 例外狀況
請問有何方法可提高效率嗎? 或是小弟程式碼真的有誤
有在WIN7底下試作只單純作"存取"這個動作,而結果是正常運作的,.net framewrok版本
為3.5,PF使用量則達到4.5G左右
所以可以判斷應該不是Arraylist容量的問題,扣除掉這些小弟能想到的便是: (1)單純記
憶體真的不足 (2)程式寫法有錯誤,並沒有將占用的記憶體釋放出來
由於總檔案才237MB,又因需要一次全部讀取進來,所以才苦腦於是否有辦法能夠降低其
使用率亦或其他有效之方法。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.128.137.29
→
11/17 23:50, , 1F
11/17 23:50, 1F
推
11/17 23:58, , 2F
11/17 23:58, 2F
推
11/17 23:59, , 3F
11/17 23:59, 3F
→
11/18 00:00, , 4F
11/18 00:00, 4F
→
11/18 00:01, , 5F
11/18 00:01, 5F
→
11/18 00:03, , 6F
11/18 00:03, 6F
→
11/18 00:04, , 7F
11/18 00:04, 7F
→
11/18 09:56, , 8F
11/18 09:56, 8F
→
11/18 16:49, , 9F
11/18 16:49, 9F
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章