为了账号安全,请及时绑定邮箱和手机立即绑定

C#:内存不足异常

C#:内存不足异常

C#
DIEA 2019-12-25 14:43:11
今天,我的申请今天抛出了OutOfMemoryException。对我来说,这几乎几乎是不可能的,因为我也有4GB RAM和很多虚拟内存。当我尝试将现有集合添加到新列表时发生了错误。List<Vehicle> vList = new List<Vehicle>(selectedVehicles);  据我了解,这里没有分配多少内存,因为我的新列表中应该包含的车辆已经存在于内存中。我不得不承认这Vehicle是一个非常复杂的类,我试图一次将大约50.000个项目添加到新列表中。但是,由于Vehicle应用程序中的所有s都来自大小仅为200MB的数据库:目前,我不知道可能会导致什么OutOfMemoryException。
查看完整描述

3 回答

?
繁花如伊

TA贡献2012条经验 获得超12个赞

两点:

  1. 如果您运行的是32位Windows,则将无法访问所有4GB内存,而只能访问2GB。

  2. 不要忘记的底层实现List是一个数组。如果您的内存非常分散,则List即使您总共有足够的可用内存,也可能没有足够的连续空间来分配您的。


查看完整回答
反对 回复 2019-12-25
?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

3岁的主题,但我找到了另一个可行的解决方案。如果您确定有足够的可用内存,正在运行64位操作系统并且仍然出现异常,请转到Project properties-> Build选项卡,并确保将其设置x64Platform target


查看完整回答
反对 回复 2019-12-25
?
慕斯709654

TA贡献1840条经验 获得超5个赞

.Net4.5对对象不再有2GB的限制。将此行添加到App.config


<runtime>

    <gcAllowVeryLargeObjects enabled="true" />    

</runtime>

并且可以创建非常大的对象而不会出现OutOfMemoryException


请注意,它仅适用于x64 OS!


查看完整回答
反对 回复 2019-12-25
  • 3 回答
  • 0 关注
  • 785 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信