首页 > 解决方案 > 将元素添加到列表时出现 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 来解决此问题。再次感谢!

标签: c#listint

解决方案


请尝试gcAllowVeryLargeObjects在您的 app.config 中进行设置,请参阅此链接。有一个堆内存大小限制,您可能超过了它。


推荐阅读