How can you get System.OutOfMemoryException while the application is not using that much memory

I am getting this error and cannot figure out why this is happening.

I am using Windows 8.1 64-bit with 32GB of RAM

The app is 32 bit and only uses about 400MB in the task manager and even less when checked with GC.GetTotalMemory(false)

How can I debug this error?

C # wpf.net 4.5 application

Here's the largest compressed string data in the database (322KB): http://www.monstermmorpg.com/reciprocal/zipped.txt

Here's an uncompressed line from that biggest data (4837 KB): http://www.monstermmorpg.com/reciprocal/unzipped.txt

Here unpack the line function

private static string Un_GZip_String(string compressedText)
{     
        using (var memoryStream = new MemoryStream())
        {
            byte[] gZipBuffer = Convert.FromBase64String(compressedText);
            int dataLength = BitConverter.ToInt32(gZipBuffer, 0);
            memoryStream.Write(gZipBuffer, 4, gZipBuffer.Length - 4);

            var buffer = new byte[dataLength];

            memoryStream.Position = 0;
            using (var gZipStream = new GZipStream(memoryStream, System.IO.Compression.CompressionMode.Decompress))
            {
                gZipStream.Read(buffer, 0, buffer.Length);
            }

            return Encoding.UTF8.GetString(buffer);
        }
}

      

http://i.stack.imgur.com/fepMs.png

enter image description here

+3


source to share


1 answer


I would recommend downloading the ANTI Performance Profiler:

http://www.red-gate.com/products/dotnet-development/ants-performance-profiler/



It will set exactly why you are getting the out of memory exception and has a 30 day free trial - you should have enough time for that.

As someone said in the comments, it can be a bunch of large objects as it can get out of hand pretty quickly. The performance profiler will quickly tell you what the problem is.

0


source







All Articles