我写了以下功能
public void TestSB()
{
string str = "The quick brown fox jumps over the lazy dog.";
StringBuilder sb = new StringBuilder();
int j = 0;
int len = 0;
try
{
for (int i = 0; i < (10000000 * 2); i++)
{
j = i;
len = sb.Length;
sb.Append(str);
}
Console.WriteLine("Success ::" + sb.Length.ToString());
}
catch (Exception ex)
{
Console.WriteLine(
ex.Message + " :: " + j.ToString() + " :: " + len.ToString());
}
}
Run Code Online (Sandbox Code Playgroud)
现在我想,这个stringbuilder有能力超过20亿字符(准确地说是2,147,483,647).
但是当我运行上面的函数时,它只是在达到大约8亿的容量时给出了"System.OutOfMemoryException".而且,我在具有相同内存和相似负载量的不同PC上看到了截然不同的结果.
任何人都可以提供或解释我的原因.