Web Debug

Fix broken web applications, from servers to clients.

Troubleshooting IIS high memory issue

Troubleshooting System.OutOfMemoryExceptions in ASP.NET
By Jim Cheshire

When the .NET Framework was first released, many developers believed the introduction of the garbage collector meant never having to worry about memory management ever again. In fact, while the garbage collector is efficient in managing memory in a managed application, it's still possible for an application's design to cause memory problems.

One of the more common issues we see regarding memory involves System.OutOfMemoryExceptions. After years of helping developers troubleshoot OutOfMemoryExceptions, we've accumulated a short list of the more common causes of these exceptions. Before I go over that list, it's important to first understand the cause of an OutOfMemoryException from a 30,000 foot view.

Troubleshooting native memory leak in an IIS 7.x Application Pool
Published on April 9, 2012 by Apurva Joshi

This troubleshooter will help you to identify the cause of native memory leak in an IIS application pool. It’s important to keep in mind that it is normal for high memory allocation as a web application serves requests. However, if you consistently see both Process\Private Bytes and Process\Virtual Bytes are increasing or Process\Private Bytes and Process\Working Set are increasing and Memory\Available Bytes is decreasing, the memory leak will occur and it may cause an out-of-memory exception.

.NET Memory Leak: XmlSerializing your way to a Memory Leak
By Tess Ferrandez

Problem Description
We have continuous memory growth in our ASP.NET application. We don't cache much or use any session state so that doesn't seem to be the problem, but the memory usage just keeps increasing at a steady rate. An attempt to call GC.Collect shows that even a full collection does not reduce the memory usage.

.NET Memory Leak: To dispose or not to dispose, that’s the 1 GB question
By Tess Ferrandez

I was looking at a memory dump recently for an issue where the process would grow to over 1 GB and return OutOfMemory Exceptions.
The dump itself was 1.34 GB which is basically the memory we have committed (used) so it was pretty big, and the first thing we need to check for in this case is whether we are dealing with an issue with high .NET GC memory usage (lots of .net objects), .NET loader heap usage (lots of dlls) or native memory usage (native heaps or dlls)

Fork me on GitHub