我想知道为什么我无法在32位.NET进程中分配超过1,000 MB的内存.以下迷你应用程序在分配1,000 MB后抛出OutOfMemoryException.为什么1,000 MB,而不是说1.8 GB?是否有可以更改的流程范围设置?
static void Main(string[] args)
{
ArrayList list = new ArrayList();
int i = 0;
while (true)
{
list.Add(new byte[1024 * 1024 * 10]); // 10 MB
i += 10;
Console.WriteLine(i);
}
}
Run Code Online (Sandbox Code Playgroud)
PS:垃圾收集没有帮助.
编辑,澄清我想要的:我编写了一个服务器应用程序,在写入数据库/磁盘之前处理大量数据.我没有为所有内容创建临时文件,而是编写了一个内存缓存,这使整个过程非常快.但记忆是有限的,所以我试图找出限制是什么.并且想知道为什么我的小测试程序在完全1,000 MB之后抛出了OutOfMemoryException.
我必须创建一个相当大的双阵列12000ish x 55000ish.不幸的是,我得到了一个内存不足的例外.我曾经用Java开发,可以改变内存设置.这可能与C#有关还是不可能?我正在使用VS 2008.