我想知道为什么我无法在我的32位.NET进程中分配多于1,000 MB的内存。以下迷你应用程序在分配1,000 MB后引发OutOfMemoryException。为什么要1,000 MB,而不是说1.8 GB?有没有可以改变的全过程设置?在32位.NET进程中分配超过1,000 MB的内存
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);
}
}
PS:垃圾收集没有帮助。
编辑,以澄清我想要的:我写了一个服务器应用程序,它在写入数据库/磁盘之前处理大量的数据。我没有为所有东西创建临时文件,而是编写了一个内存缓存,这使得整个事情变得非常快。但是记忆是有限的,所以我试图找出限制是什么。并想知道为什么我的小测试程序在完全1000 MB之后抛出OutOfMemoryException。
Johannes,为什么会有更多的地址空间不容易找到更多的连续地址空间?我对你的评论完全困惑。你可以解释吗? – 2009-07-10 18:06:06
@Eric - 我很高兴它不只是我... – 2009-07-10 18:55:44
请看我的说明。我已经在使用db/fs。 – 2009-07-12 13:36:19