【发布时间】:2020-04-18 13:30:32
【问题描述】:
尝试将大型列表添加到 int 列表中时,出现内存不足异常。在下面发布一个可重现的 sn-p 来说明问题:
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 来解决此问题。
再次感谢!
【问题讨论】:
-
尝试使用具有预定义长度的数组,检查此脚本,` var Arr = new long[20000]; var lstArr = 新长 [20000]; for (long i = 0; i
-
如果您无法设置
gcAllowVeryLargeObjects,那么另一种解决方法是设置多个列表,每个列表都在限制范围内。