[.NET] 程式產生似乎是記憶體不夠的錯誤
請輸入專案類型(網站專案或者應用程式專案):應用程式專案
這是我之前問到資料庫,或是物件的生命週期等問題時
所做的是同一個程式
大致上的功能都做出來了
給委託人時他說遇到一個問題
我在寫程式時都是使用同一組測試資料
(礙於要提供的資料量太多,有好幾張表格要同時讀入,且那是其他軟體產生的)
主要就是做大約長度為240,時間為500次的模擬作業而已
委託人在測試時說
他使用一組長度為1100左右
時間為3100次左右的模擬時
跳出了System.OutOfMemoryException 未處理的錯誤
================================================
System.OutOfMemoryException 未處理
Message="已發生類型 'System.OutOfMemoryException' 的例外狀況。"
Source="mscorlib"
StackTrace:
於System.Object.MemberwiseClone() 於System.Array.Clone()
於CTMandKalmanFliter.Form1.RunCTMandKalman() 於[我的程式碼路徑]:行 685
於System.Threading.ThreadHelper.ThreadStart_Context(Object state)
於System.Threading.ExecutionContext.run
================================================
看起來是超出可使用的記憶體
在這個程式內,會產生一個大約是3100 x 171的表格
時間點有多長,這個表格就會產生幾個
所以總共是3100 x 3100 x 171筆型態為double的資料
我一看就覺得會爆炸的兇手就是它
所以我在徵求同意後
將原本每次結果都會存下來的做法
改成只會儲存最後一次的結果(但中間還是會產生那些表格,只是會直接放棄)
我丟給他修改過的版本
他卻說他還是不能跑
我自己試了一次,雖然要跑三個多小時
不過還是跑得完
想說是不是只是他硬體比較差
結果我要試第二次時
我自己也出現同樣的錯誤了
這表示前面錯誤的結果
沒有被釋放掉就留到了這一次嗎?
我有確實得將那個巨大的表格
在用完以後釋放掉呀(使用 = Nothing 的做法)
但是結果卻還是沒有真正的釋放掉嗎?
其實應該還是足夠執行才對的
請問要怎麼叫VB去回收那些資源呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 192.192.154.54
推
06/16 21:59, , 1F
06/16 21:59, 1F
→
06/16 22:54, , 2F
06/16 22:54, 2F
→
06/17 01:00, , 3F
06/17 01:00, 3F