Descompressão GZIP C # OutOfMemory

Eu tenho muitos arquivos gzip grandes (aproximadamente 10MB - 200MB) que eu baixei do ftp para ser descompactado.

Então eu tentei google e encontrar alguma solução para descompressão gzip.

<code>    static byte[] Decompress(byte[] gzip)
    {
        using (GZipStream stream = new GZipStream(new MemoryStream(gzip), CompressionMode.Decompress))
        {
            const int size = 4096;
            byte[] buffer = new byte[size];
            using (MemoryStream memory = new MemoryStream())
            {
                int count = 0;
                do
                {
                    count = stream.Read(buffer, 0, size);
                    if (count > 0)
                    {
                        memory.Write(buffer, 0, count);
                    }
                }
                while (count > 0);
                return memory.ToArray();
            }
        }
    }
</code>

ele funciona bem para qualquer arquivo abaixo de 50mb, mas uma vez que eu tenha recebido mais de 50mb, recebi exceção de memória do sistema. Última posição e o comprimento da memória antes da exceção é 134217728. Eu não acho que tenha relação com minha memória física, eu entendo que não posso ter objetos com mais de 2GB desde que eu uso 32 bits.

Eu também preciso processar os dados depois de descompactar os arquivos. Eu não tenho certeza se o fluxo de memória é a melhor abordagem aqui, mas eu realmente não gosto de escrever no arquivo e depois ler os arquivos novamente.

Minhas perguntas

Por que recebi System.OutMemoryException?qual é a melhor solução possível para descompactar arquivos gzip e fazer algum processamento de texto depois?

questionAnswers(4)

yourAnswerToTheQuestion