OutOfMemoryException no Regex Corresponde ao processar arquivos grandes

Eu tenho um log de exceção de um dos lançamentos de código de produçã

System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
   at System.Text.RegularExpressions.Match..ctor(Regex regex, Int32 capcount, String text, Int32 begpos, Int32 len, Int32 startpos)
   at System.Text.RegularExpressions.RegexRunner.InitMatch()
   at System.Text.RegularExpressions.RegexRunner.Scan(Regex regex, String text, Int32 textbeg, Int32 textend, Int32 textstart, Int32 prevlen, Boolean quick)
   at System.Text.RegularExpressions.Regex.Run(Boolean quick, Int32 prevlen, String input, Int32 beginning, Int32 length, Int32 startat)
   at System.Text.RegularExpressions.MatchCollection.GetMatch(Int32 i)
   at System.Text.RegularExpressions.MatchEnumerator.MoveNext()

Os dados que ele tenta processar eram de cerca de 800 K

Nos meus testes locais, ele funciona perfeitamente bem. Você já viu um comportamento semelhante, qual pode ser a causa?

Devo dividir o texto antes de processá-lo, mas obviamente nesse caso a regex pode não corresponder porque o arquivo original foi dividido em um local aleatóri

My Regexes:

EDIT 2:

Acho que esse RegEx específico está causando o problema, quando o testo em um ambiente isolado, ele está consumindo a memória instantaneament

((?:( |\.\.|\.|""|'|=)[\/|\?](?:[\w#!:\.\?\+=&@!

EDITA

Eu estava errado com meu teste local. Eu estava carregando uma string grande e depois anexando itens a ela, o que deixa o .NET Framework tonto e, em seguida, gera uma exceção de OOM durante o RegEx, em vez de durante operações de string (ou aleatoriamente, então ignore as coisas anteriores que eu disse).

Este é um aplicativo .NET Framework 2.

~*,;\/\(\)\[\]\-]|%[0-9a-f]{2})*)( |\.|\.\.|""|'| ))?

EDITA

Eu estava errado com meu teste local. Eu estava carregando uma string grande e depois anexando itens a ela, o que deixa o .NET Framework tonto e, em seguida, gera uma exceção de OOM durante o RegEx, em vez de durante operações de string (ou aleatoriamente, então ignore as coisas anteriores que eu disse).

Este é um aplicativo .NET Framework 2.

questionAnswers(3)

yourAnswerToTheQuestion