C # Stringbuilder OutOfMemoryException

Я написал следующую функцию

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());
  }
}

Теперь я полагаю, что этот конструктор строк может принимать более 2 миллиардов символов (2 147 483 647, если быть точным).

Но когда я запустил вышеупомянутую функцию, она выдала "System.OutOfMemoryException" как раз при достижении емкости около 800 миллионов. Более того, я вижу совершенно разные результаты на разных компьютерах с одинаковой памятью и одинаковым количеством нагрузка.

Кто-нибудь, пожалуйста, объясните мне причину этого.

18
задан Atur 29 April 2015 в 07:05
поделиться