消耗1.5GB内存后,VS2010 C#64bit应用程序抛出OutOfMemoryException

时间:2012-10-31 15:56:19

标签: c# visual-studio-2010 64-bit out-of-memory

我希望在针对x64构建应用程序时看到System.OutOfMemoryException和任务管理器中消耗的内存。应用程序属性的Build选项卡中有两个下拉菜单:“Platform target”和“Platform”,两者都设置为x64。

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            List<long> lst = new List<long>();
            while (true)
            {
                lst.Add(long.MaxValue);
            }
        }
    }
}

它确实显示OutOfMemoryException ...但是当它停止时,任务管理器显示的数字为1587443K,这是1.5GB,如果它是针对x86构建的,我期望它。 是的,操作系统是64位。

我忘记了别的什么吗?

1 个答案:

答案 0 :(得分:5)

  

我忘记了别的什么吗?

是的 - 在.NET 4中,仍然存在每个对象2GB的限制。 (您可以使用更多内存,但不能在单个对象中使用。)我怀疑您的列表需要重新分配其内部缓冲区,在单个阵列中需要~3GB。

如果您设置.NET 4.5 supports larger objects配置参数,可能会听到<gcAllowVeryLargeObjects>