Mir*_*rek 2 c# 64-bit out-of-memory visual-studio-2010
我希望在针对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);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
它确实显示OutOfMemoryException ...但是当它停止时,任务管理器显示一个1587443K的数字,这是1.5GB,如果它是针对x86构建的,我期望它.是的,操作系统是64位.
我忘记别的了吗?
我忘记别的了吗?
是的 - 在.NET 4中,仍然存在每个对象2GB的限制.(您可以使用更多内存,但不能在单个对象中使用.)我怀疑您的列表需要重新分配其内部缓冲区,在单个阵列中需要~3GB.
如果设置配置参数,您可能会很高兴听到.NET 4.5支持更大的对象<gcAllowVeryLargeObjects>.