gpt4 book ai didi

c# - .NET 内存不足异常

转载 作者:可可西里 更新时间:2023-11-01 08:15:49 26 4
gpt4 key购买 nike

为什么会这样:

class OutOfMemoryTest02
{
static void Main()
{
string value = new string('a', int.MaxValue);
}
}

抛出异常;但这不会:

class OutOfMemoryTest
{
private static void Main()
{
Int64 i = 0;
ArrayList l = new ArrayList();
while (true)
{
l.Add(new String('c', 1024));

i++;
}
}
}

有什么区别?

最佳答案

您是否在文档中查找过 int.MaxValue?它相当于 2GB,这可能比连续的“a”字符 block 可用的 RAM 多 - 这就是您在这里要求的。

http://msdn.microsoft.com/en-us/library/system.int32.maxvalue.aspx

您的无限循环最终会导致相同的异常(或与过度使用 RAM 间接相关的不同异常),但这需要一段时间。尝试将 1024 增加到 10 * 1024 * 1024 以在循环情况下更快地重现症状。

当我使用这个更大的字符串运行时,我在 68 次循环(检查 i)后的 10 秒内得到了异常。

关于c# - .NET 内存不足异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4248858/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com