GZIP descompresión C # OutOfMemory

Tengo muchos archivos gzip grandes (aproximadamente 10 MB - 200 MB) que descargué desde ftp para descomprimirlos.

Así que traté de google y encontrar alguna solución para descompresión 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>

Funciona bien para cualquier archivo por debajo de 50 mb, pero una vez que ingresé más de 50 mb, obtuve una excepción del sistema sin memoria. La última posición y la longitud de la memoria antes de la excepción es 134217728. No creo que tenga relación con mi memoria física, entiendo que no puedo tener objetos más de 2GB ya que uso 32 bits.

También necesito procesar los datos después de descomprimir los archivos. No estoy seguro de si el flujo de memoria es el mejor enfoque aquí pero realmente no me gusta escribir en un archivo y luego leer los archivos nuevamente.

Mis preguntas

¿Por qué obtuve System.OutMemoryException?¿Cuál es la mejor solución posible para descomprimir archivos gzip y luego procesar el texto?

Respuestas a la pregunta(4)

Su respuesta a la pregunta