Understanding memory problems
Published 14 May 2018
Before you can fix a memory problem, you need to identify which kind of memory problem you have.These are the problems you're most likely to encounter, with a list of symptoms to help you recognise them:
Problem: Large object heap fragmentation
Symptoms:
- There is a lot of memory allocated to your application which isn't being used (ie hasn't been committed).
- OutOfMemory exceptions are thrown, although there's still spare space on the .NET heap. The exception is thrown unpredictably.
- The Memory fragmentation section on the summary page suggests you may have a problem with fragmentation.
Problem: Unmanaged memory leaks
Symptoms:
- Performance degrades while the application runs. Performance recovers when the application restarts, and then degrades again.
- On the timeline, the number of private bytes increases more quickly than the number of bytes in the .NET heap.
- Something other than the CLR is using a lot of unmanaged memory. Unmanaged memory usage grows or stays constant, even when your application has finished using unmanaged modules.
Problem: Managed memory leaks
Symptoms:
- Performance degrades while the application runs. Performance recovers when the application restarts, and then degrades again.
- The number of bytes in the .NET heap increases continually over time.
- Memory use increases whenever you carry out a specific action. Memory use doesn't go back to the same level after the action is complete.
Problem: Excessive overall memory usage
Symptoms:
- Every application has different memory usage and requirements, so there's no standard amount that is "too much" memory.
- Users may notice that the application is using more memory than they expect, especially in memory-critical environments.
If you aren't familiar with memory profiling, you might find our .NET Memory Primer useful before you start.
This documentation contains proprietary information and is protected by copyright law.
Copyright © 2026 Red Gate Software Limited. All rights reserved