ANTS Memory Profiler - 7.1
2. Checking unmanaged memory usage - ANTS Memory Profiler
Before you check your application's usage of unmanaged memory, we recommend that you check for fragmentation of the large object heap.
If you are not familiar with memory profiling, you might find it helpful to read about the .NET heaps before you start.
To check for unmanaged memory usage
- Set-up ANTS Memory Profiler.
- Click
. - Do the action that you think causes the problem (for example, open the dialog box).
- Click
. - On the summary screen, look at the .NET and unmanaged memory pie chart. If there is a large amount of unmanaged usage, you should investigate it; see 'To identify the cause of large amounts of unmanaged memory', below.
If you do not have a large amount of unmanaged memory use, continue checking managed memory use.
To identify the cause of large amounts of unmanaged memory usage
Possible causes of large amount of unmanaged memory usage include:
- Graphics buffers.
See the next section. - The .NET Common Language Runtime (CLR) itself.
The CLR itself uses unmanaged memory. If your application uses very little memory in total, the amount of memory used by the CLR may appear to take up a large percentage of the memory in use by the application.If the amount of unmanaged memory used in your application is less than about 40MB, the CLR is likely to be the cause. Continue checking for managed memory usage.
- Accessing unmanaged data through P/Invoke or COM+.
In these cases, ANTS Memory Profiler is unlikely to reveal any useful information, because it cannot profile unmanaged code. - Problems with object disposal in unmanaged code.
This is rarely the cause of a problem, but to check for this, switch to the Class List. On the Filters panel, switch to Filter By Reference. Select Kept in memory exclusively by..., click Add new item and then select By disposed objects. For each class that remains in the Class List, click the instance categorizer icon (
), to check why instances of that class are being kept in memory.
Checking unmanaged memory usage due to graphics buffers
- Switch to the Class List.
- On the Filters panel, switch to the Filter by Object Type tab and select Objects that implement.
- Click Add class / interface, then choose the appropriate graphics class for your application type:
- For WinForms applications, choose System.Image.
- For WPF applications, choose System.Windows.Media.Imaging.BitmapImage.
- Switch to the Instance List and sort it by Distance from GC Root.
- Look at the instances which are furthest from the GC Root. This is because leaked images are likely to be further from the root.
- Use the instance retention graph to work out why each image is still in memory; see The Instance Retention Graph.
- If you do not see the cause of the memory problem, and if your application is a WinForms application, repeat the steps above using Objects that implement System.Windows.Media.Imaging.CachedBitmap.
- If the objects that implement System.Windows.Media.Imaging.CachedBitmap filter does not show the cause of the memory problem, repeat the steps again using Objects that implement System.Windows.Media.ImageSource.
We recommend that you do not use the instance categorizer for this investigation, because the categorization will tend to emphasize large numbers of small images. It may not show small numbers of large images.
Note that in the Instance List all images will appear to be the same very small size (24 bytes in the case of System.Image objects). This is actually only the amount of managed memory used to create the pointer to the image. The image itself is in unmanaged memory, and so ANTS Memory Profiler cannot show its size.
Was this article helpful?
ANTS Memory Profiler
- Installation error 5100 when installing ANTS Performance Profiler and ANTS Memory Profiler
- Attach to process unavailable with some anti-virus software
- Fragmentation notices in ANTS Memory Profiler 7
- The snapshot failed because .NET did not report every referenced object... manually switch your application to the workstation garbage collector.
- Profiling Sharepoint 2010
- Upgrading to ANTS Memory Profiler 7
- Memory leaks observed when profiling Windows Presentation Framework (WPF) applications
- Windows service profiling fails if the service uses a system account
- Log files
- The type initializer for 'y.layout.hierarchic.ClassicLayerSequencer' threw an exception
- Forcing your application to use .NET 4
- System.EntryPointNotFoundException (Versions: 3,4 only)
- Failed to CoCreate Profiler error profiling a Windows service
- ANTS Profiler code instrumentation method
- Add-in fails to load when using RunAs to start Visual Studio as another user
- Profiling unit tests using Nunit
- Can I profile Compact Framework applications?
- Profiling a SharePoint 2007 Web Part
- Profiling IIS web applications that need to run under the SYSTEM account
- Profiling a web application hosted in IIS on a fixed TCP port
- Profiling client-side XBAP .NET applications
- ANTS Profiler prompts for location of source code which is not your own source code
- ANTS menu remains in Visual Studio after uninstall of ANTS Profiler
- Profiling a web application needing to run as the Network Service account
- Cannot start COM+ application via Remote Desktop
- Profiling BizTalk applications
- Profiling Microsoft Office managed-code add-ins
- The system cannot find the file specified
- Error Stopping IISAdmin profiling IIS web application on Windows XP
- ANTS Memory Profiler total size of all objects does not match the memory footprint of an application
- Creating a global debugging symbols (PDB) directory
- Using the add-in to profile solutions containing more than one project
- Application recycling causes incomplete results and other errors when profiling ASP .NET
- (version 5) Support for profiling Silverlight applications
- Couldn't open metabase error when profiling ASP .NET hosted in IIS
- Failed to coCreate Profiler on ASP .NET web application
- HTTP error 404.17 profiling ASP .NET 1.1 on IIS 7
- Performance counters missing from results
- ANTS Profiler restarts IIS
- Please specify a valid URL message profiling ASP .NET
- Operation could destabilize the runtime error profiling ASP .NET
- IIS ceases to work after profiling web applications
- ANTS Profiler has been split into two distinct programs
- Problems with ANTS Memory Profiler 5 and multiple AppDomains
- System.ArgumentOutOfRangeException or CouldNotMapFileException errors in Memory Profiler 5
- Windows Installer errors 1603 and 2738 occurring during installation
- Unable to coCreate Profiler error profiling any application
- General information about "Private Bytes"
- Profiler stopping while profiling an in-browser Silverlight application
- Error: 'Could not load file or assembly vjslib'
- "No Disk" error occurring while profiling application
- Silverlight out-of-browser profiling stops with no results
- Memory Profiler failing to profile web applications with "unable to connect to server"
all products
- Some Red Gate products identified as containing a trojan by Anti-Virus software
- Activation may fail with Unknown Error -1
- Product uses web help although a CHM file is available locally
- Argument exception resulting from missing environment variable
- Check for updates may fail when used through proxies
- 'Unidentified Publisher' error when repairing or uninstalling
- Licensing activates product as standard edition
- Moving Red Gate software products to another machine
- Red Gate tools log locations
- The application UI opening slowly when there is no internet access
ANTS Memory Profiler
- Activating your products
- Activating your products
- ANTS Memory Profiler release notes - version 6.xx
- ANTS Memory Profiler release notes - version 7.xx
all products
- Red Gate product acknowledgements
- Activating your products
- Activating your products
- Red Gate bundle history
- Check for updates
- Troubleshooting Check for Updates errors
- Current versions
- Deactivating your products
- Installing Red Gate products from the .msi file
- Requesting additional activations
- Serial numbers for bundles
- Reactivating using a different serial number
- Extending your trial
- Finding your serial numbers
- Moving a serial number from one computer to another
- No response received for manual activation
- Licensing and activation resources
- Licensing and activation resources
- Troubleshooting licensing and activation errors
- Licensing and activation FAQs
- Red Gate tools log file locations
- Download old versions of products
- Download product prerequisites & utilities
- Support & upgrades
- Upgrading your software
- Upgrading FAQs

Understanding memory problems