c# - 将元素添加到列表时出现 C# Out of Memory 异常> 使用 ToList()
问题描述
在尝试将巨大的列表添加到 int 列表中时,出现内存不足异常。在下面发布一个可重现的片段来说明这个问题:
List<long> Arr = new List<long>();
List<List<long>> lstArr = new List<List<long>>();
for (long i = 0; i < 20000; i++)
{
for (int k = 0; k < 20000; k++)
{
Arr.Add(k);
}
// Below is the line that generates the exception
lstArr.Add(Arr.ToList());
Arr.Clear();
}
Console.ReadLine();
我们怎样才能纠正这个问题?请注意,我们应该理想地使用List<List<int>>
.我完全理解这是一个堆内存分配问题。因此,我正在尝试一种代码解决方法 /alternate 来解决此问题。再次感谢!
解决方案
请尝试gcAllowVeryLargeObjects
在您的 app.config 中进行设置,请参阅此链接。有一个堆内存大小限制,您可能超过了它。
推荐阅读
- android - 正则表达式获取正数
- r - 在 R 中对多个数据框运行元分析
- java - 用 Gou Hall 算法进行骨架化不起作用
- excel - 尝试为变量赋值时出现 VBA 运行时错误 1004“应用程序定义或对象定义错误”
- c++ - QT如何检查是否按下了键?
- angular - 如何使用 ngx-datatable 动态删除和编辑行
- c# - 单例视图模型 WPF
- javascript - 使用列表更改 html 页面白色事件 onchange
- java - mvn 在运行 junit5 合同测试时返回未找到测试消息
- javascript - 如何设置 scollbar overlay-y 的宽度