今天,我的申請今天拋出了OutOfMemoryException。對我來說,這幾乎幾乎是不可能的,因為我也有4GB RAM和很多虛擬內存。當我嘗試將現有集合添加到新列表時發生了錯誤。List<Vehicle> vList = new List<Vehicle>(selectedVehicles); 據我了解,這里沒有分配多少內存,因為我的新列表中應該包含的車輛已經存在于內存中。我不得不承認這Vehicle是一個非常復雜的類,我試圖一次將大約50.000個項目添加到新列表中。但是,由于Vehicle應用程序中的所有s都來自大小僅為200MB的數據庫:目前,我不知道可能會導致什么OutOfMemoryException。
3 回答

繁花如伊
TA貢獻2012條經驗 獲得超12個贊
兩點:
如果您運行的是32位Windows,則將無法訪問所有4GB內存,而只能訪問2GB。
不要忘記的底層實現
List
是一個數組。如果您的內存非常分散,則List
即使您總共有足夠的可用內存,也可能沒有足夠的連續空間來分配您的。

斯蒂芬大帝
TA貢獻1827條經驗 獲得超8個贊
3歲的主題,但我找到了另一個可行的解決方案。如果您確定有足夠的可用內存,正在運行64位操作系統并且仍然出現異常,請轉到Project properties
-> Build
選項卡,并確保將其設置x64
為Platform target
。

慕斯709654
TA貢獻1840條經驗 獲得超5個贊
.Net4.5對對象不再有2GB的限制。將此行添加到App.config
<runtime>
<gcAllowVeryLargeObjects enabled="true" />
</runtime>
并且可以創建非常大的對象而不會出現OutOfMemoryException
請注意,它僅適用于x64 OS!
- 3 回答
- 0 關注
- 813 瀏覽
添加回答
舉報
0/150
提交
取消