Я получаю исключения OOM в приложении ASP.Net и обнаружил, что это, вероятно, вызвано тяжелыми строковыми операциями, такими как s1 = s1.Replace() и s1 = s1.SubString(), в то время, когда выдаются исключения.
Можно ли получить исключения OOM только из этих операций, если они выполняются последовательно? Количество запросов невелико, но возможно ли, что GC не освобождает память вовремя, прежде чем будет сделано новое выделение в куче?
Другими словами: может ли следующий код давать исключения OOM или сборщик мусора выпустит большое количество строк без ссылок, прежде чем мы доберемся до исключения OOM?
string s = "hello world";
while (true)
{
s = s.Replace("h", "h");
}