我编写了以下函数
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());
}
}
我认为,StringBuilder具有超过20亿个字符的容量(精确地说是2,147,483,647)。
但是,当我运行上述函数时,它在达到大约8亿的容量时就会给出System.OutOfMemoryException。 此外,我发现在具有相同内存和类似负载量的不同PC上,结果差异很大。
请问是否有人能够提供或解释这种情况的原因?
StringBuilder sb = new StringBuilder(10000000 * 1);
更好地处理大量数据。对于大型集合,使用(初始)容量总是一个好主意。 - H H