c# - VS2010 C# 64 位应用程序在消耗 1.5GB 内存后抛出 OutOfMemoryException

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

当应用程序是针对 x64 构建时,我想查看 System.OutOfMemoryException 以及任务管理器中消耗的内存。应用程序属性的“构建”选项卡中有两个下拉菜单:“平台目标”和“平台”,两者均设置为 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 位。

我是不是忘记了什么?

最佳答案

Am I forgetting something else?

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

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

关于c# - VS2010 C# 64 位应用程序在消耗 1.5GB 内存后抛出 OutOfMemoryException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13161939/

相关文章:

vb.net 应用程序可处理拖到 exe 上的文件,但如果文件路径中有空格,则会崩溃

c# - LINQ to XML 设置值,如果它不为空,否则使用构造函数的默认值

c# - 悬停效果对WPF TreeView的子元素有错误

c# - 什么是同步和异步方法?

php - 无法在 64 位 linux、php5.4 上为 apache2 加载 AMQP

windows - 在这种情况下如何找到java?

c - 64 位 CPU 上不同整数大小的效率

c# - INotifyCollectionChanged 的​​ NewItems - 不能使用 OfType<T> 获取数据

c# - 我PC上的ClickOnce部署和安装路径

visual-studio - CSS 文件无法在 Visual Studio 2010 SP1 中打开?