今天我的申请结果是OutOfMemoryException分.对我来说,这几乎是不可能的,因为我有4GB内存和大量虚拟内存.错误发生在我试图将现有集合添加到新列表时.

List<Vehicle> vList = new List<Vehicle>(selectedVehicles);  

据我所知,这里分配的内存不多,因为我的新列表应该包含的车辆已经存在于内存中.我不得不承认Vehicle%是一个非常复杂的课程,我试着一次向新的 list 中添加大约50.000个项目.但是由于应用程序中的所有Vehicle都来自一个只有200MB大小的数据库,所以我不知道是什么原因导致了OutOfMemoryException.

推荐答案

两点:

  1. 如果您运行的是32位Windows,则无法访问所有4GB,只能访问2GB.
  2. 不要忘记List的底层实现是一个array.如果你的内存严重碎片化,可能没有足够的连续空间来分配你的List个内存,即使总的来说你有足够的空闲内存.

.net相关问答推荐

API响应返回null错误. NET MAUI

从没有流的EventStore中读取流不存在异常

MSBuild:CopyToOutputDirectory不会将本机DLL复制到输出

使用React路由加载器获取数据不能正常工作

在平板电脑上运行我的 Angular 13 和 .Net Api 项目时,它不会向 api 输入请求

使用 DataDog 收集 OpenTelemetry 跟踪

Visual Studio 2022 中的目标操作系统和目标运行时有什么区别?

在.NET C#中截断整个单词的字符串

如何获得友好的操作系统版本名称?

ASP.NET MVC:隐藏字段值不会使用 HtmlHelper.Hidden 呈现

(C# 7.2)私有保护修饰符的用例是什么?

什么决定了 Path.GetTempPath() 的返回值?

读取方法的属性值

哪个更快:清除集合或实例化新的

当程序员说针对接口而不是对象的代码时,他们是什么意思?

C#中的引用类型

如何确定字符串是 C# 中的有效 IPv4 还是 IPv6 地址?

.NET 高级别的 .NET 4.0 和 .NET 4.5 的区别

DLL 中有什么以及它是如何工作的?

在不使用while循环的情况下找到最里面的异常?