Version 5.7.26, released January 3, 2022
- Fix: Fix error that could occur when detecting Visual Studio in the installer.
Version 5.7.25, released December 17, 2021
- New: Support for Visual Studio 2022 integration.
- New: Support for .NET 6.0.
Fix: Avoid warning about stuck finalizer, unless the dispose tracker is enabled.
The dispose tracker will detect resurrected instances and avoid the warning. Without this detection false warnings may be presented for resurrected instances.
Change: Integration with Visual Studio 2015 has been removed.
If Visual Studio 2015 integration is needed, an older version of the profiler can be installed. Alternatively, contact us at email@example.com and we
will consider re-adding Visual Studio 2015 integration if there is a demand.
Version 5.7.21, released June 17, 2021
Fix: Fix access violation that could occur in the profiled process, when the native resource tracker was enabled and symbols were not downloaded
from the Microsoft symbol store.
Fix: Show analysis issues in instance graph, even when issue analyzer finishes after the graph has been created.
Fix: Fix incorrect back and forward history navigation.
Type instance details were, for instance, not correctly included in the navigation history.
Version 5.7.20, released February 10, 2021
Change: The filter status under the Types/Details list includes the full column name.
Now it's for example possible to distinguish between "Delta live instances" and "Delta live bytes". Previously
both were presented as "Delta".
Version 5.7.19, released February 3, 2021
- New: Dispose tracker now handles IAsyncDisposable as well.
- New: Include predefined "Dispose info" graph layout under real-time view.
- Change: Include "Disposed instances" and "Undisposed instances" columns in real-time view when the "Dispose info" field set is selected.
- Change: Better classification of disposable types under .NET Core/.NET 5.0.
- Fix: Info about undisposed instances of non-finalizable types was not correctly reported.
- Fix: Make sure that session window is activated when starting profiling from a project.
Version 5.7.17, released January 12, 2021
- Fix: Presenting available software updates could cause exception in v5.7.
Version 5.7.16, released January 4, 2021
- Fix: Could fail to lookup .NET data access library files when importing memory dumps.
- Fix: Failed to correcly identify array instances when importing memory dumps using .NET Framework 4.5.x (due to a bug in the .NET runtime).
- Change: A "[Truncated]" item is included in the fields list if array instance data has been truncated.
Version 5.7.15, released December 28, 2020
- Fix: Failed to start ASP.NET Core 2.x profiling under Visual Studio 2017.
Version 5.7.13, released December 11, 2020
Version 5.6.53, released March 26, 2019
New: Support for Visual Studio 2019.
New: Support for .NET Core 3.0.
Change: Identification of 32-bit process in a 64-bit memory dump has been improved.
Fix: Initial presentation of instance graphs could be incorrect, and held/reachable instances node not correctly included under certain circumstances.
Fix: An InvalidStateException could occur if snapshot comparison is changed while retrieving instance graph data.
Fix: An SynchronizationLockException could occur due to a race-condition when updating type/filter instances list.
Fix: A user friendly error message is shown instead of an exception error if the profiler fails to extract start information from a Visual Studio project.
Fix: A dead-lock could occur when filtering types using the grid filter, at the same time as Visual Studio updates command buttons.
Fix: Incorrect activation of active Visual Studio document could cause switching back and forth between multiple profiler sessions in Visual Studio.
Fix: IIS Express sites not correctly updated when a previous configuration file is active when starting IIS Express profiling.
Fix: NullReferenceException could occur in SciTech.MemProfilerApi if assertion type has no namespace.
Fix: Fixed an code generation error in declarative assertions API.
Fix: Adding "Disposed instances" to real-time graph could cause an exception.
Fix: A DLL-load error could occur under Windows 7 due to a too new library included in the installation.
Fix: Reachable instances was not correctly identified for the Native memory view due to a regression in v5.6.46.
Version 5.6.46, released September 3, 2018
Fix: An incorrect d3dcompiler_47 library was included with the installation, which could cause problems with the real-time view under Windows 7.
Fix: The DependencyProperty analyzer could cause an exception when analyzing snapshots with multiple AppDomains.
Version 5.6.44, released August 21, 2018
Fix: Improved support for remote profiling over slow connections.
Fix: Better handling of lost connection during remote profiling.
Fix: Fixed an issue where it was not possible to exit NmpCore while a remote profiling session was active (e.g. when a client was unexpectedly terminated).
Fix: Stack frame roots only included the methods name and not the type name when importing memory dumps.
Fix: An exception could occur when closing a session window with real-time presentation enabled.
Fix: If NmpCore fails to save session to a file selected by user, the user will get a chance to retry the save.
Version 5.6.40, released July 20, 2018
Fix: Added missing debug profiling setting in Visual Studio.
This missing setting could cause the debugger to fail in Visual Studio 2017 15.8 Preview 3.
- Fix: Added missing support files needed to debug profile AnyCPU applications as 32-bit.
Fix: Fixed slow presentation of fields values for an instance with many child items (e.g. a large array).
Fix: Remote profiling now allows a larger time difference between client and remote profiler agent.
Previously, incorrect time zone settings could cause the remote profiling communication to fail.
Fix: It is now possible to open a session with multiple processes using the Professional edition, as long as the processes are created by a unit test framework.
Fix: Adding the "Instance references" series to the real-time view would cause an unhandled exception.
Version 5.6.34, released May 11, 2018
- Fix: Saving a session file when restarting the profiler after an unexepected stopp could cause an exception.
- Fix: The bottom of call stacks could sometimes include an incorrect, left-over, method.
Fix: An exception could occur when viewing license information for customer specific license types.
Version 5.6.33, released May 7, 2018
Fix: Fixed an exception that could occur in the real-time view due to a race condition when remote profiling.
- Fix: Inspection-only attach on a process running under .NET Runtime 2.0 could fail if .NET runtime 4.0 wasn't installed on the machine (when using NmpCore).
- Fix: The profiler failed to locate Visual Studio project to profile, if the project was nested deeper than two solution folders.
Fix: Start profiling (or debug profiling) Windows Apps (UWP) from Visual Studio could fail.
Version 5.6.30, released April 12, 2018
Fix: The native resources tracker could cause the profiled process to dead-lock, probably due to a change in the loader-lock synchronization in Windows.
Fix: It is now possible to use the /i argument to NmpCore to import a memory dump.
Fix: If an incorrect data access library file was selected, but the version (and platform) of the file is exactly the same as the expected library file, then the profiler would not prompt for the file again (unless another memory dump file is imported).
Fix: If a session with many snapshots is saved, the snapshots list now includes a scrollbar.
New: It is now possible to change the name of snapshots and add snapshot comments, using the command "Profiler->Manage snapshots".
Version 5.6.27, released March 12, 2018
Fix: If a boxed struct contained a circular reference back to the same struct, an infinite recursion could occur when presenting field values (causing a StackOverflowException).
Fix: Expanding/collapsing types in the grouped instances list, while instances were being retrieved, could cause an exception.
Fix: A null "(value)" was incorrectly presented under string instances in the field values tree.
Version 5.6.24, released March 1, 2018
Fix: If "Accumulated over time interval" was selected as graph presentation, the graph was not included in the real-time view.
Fix: Background color in real-time "Settings and series" selectors now matches the background of the panel.
Fix: When editing a profiler project in Visual Studio it was not correctly marked as modified.
Version 5.6.23, released February 28, 2018
New: Presentation of field values in the type instances list
New: Improved filtering and presentation of type instances
New: Run tests using the DevExpress CodeRush testrunner
New: Decompile methods in call stacks (using DevExpress CodeRush)
New: Select roots to include/exclude in the instance graphs
New: Better navigation of types, resources, filtes, and instances
New: Visual Studio integration as external process
New: Themes matching the Visual Studio light, blue and dark themes
Version 5.5.71, released January 12, 2018
Change: If the installation of the Visual Studio integration package fails, the .NET Memory Profiler installation will still succeed.
Previously a failed installation of the integration package would prevent the profiler from being installed.
Change: Improved memory management when importing 32-bit memory dumps
This will allow larger 32-bit memory dumps to be imported.
- Fix: Fixed an error in the native call stack tracker that could cause the profiled process to crash.
- Fix: Removed a reference to the CannotUnloadAppDomainException class, which could cause problems with the dispose tracker when profiling a .NET Core application.
- Fix: Fixed a problem with the verification of the registration key that could occur under very rare circumstances.
- Fix: When the passthrough argument (/pt) is used, the exit code of the started process is always returned, even when multiple processes are profiled.
- Fix: Better identification of heap generations when importing memory dumps.
Version 5.5.66, released October 9, 2017
Fix: The profiled process could crash with an ExecutionEngineException if AppDomains have been unloaded.
A workaround for a bug in the .NET runtime, where unloaded classes are not fully reported, failed to detect all unloaded classes.
- Fix: A new required file in a component library was missing from the installer, causing an error when activating licenses.
Version 5.5.64, released September 26, 2017
- Fix: Starting to profile an ASP.NET Core or .NET core project in Visual Studio could cause an unhandled exception in Visual Studio.
- Fix: Updating the call tree could be very slow if the user has previously used Ctrl-F to search for methods.
- Fix: An exception could occur in the real-time view when profiling a remote process.
- Fix: When restarting a remote profiling session, the remote connection is now correctly remembered.
- Change: Improved prompting of user credentials when performing remote profiling.
- Fix: Remote profiling connection is now stored in profiler project.
- Fix: Incorrect initialization of call stack collection settings for the native resource tracker could cause the profiled process to crash or hang.
- Fix: The profiled process could hang if the running the resources tracker with logging enabled.
Fix: The "Associate memory with resource" command has been removed from menus and toolbars.
The associate memory feature was removed from version 5.5 of .NET Memory Profiler, but the command still existed in some menus.
- Change: The text "Unmanaged resources" has been changed to "Native resources"
Version 5.5.55, released August 21, 2017
- Fix: Ignore issue based on allocation call stack did not work correctly.
- Fix: Copy value to clipboard did not work correctly in all views.
- Fix: Copy instance graph (Copy and Copy All) to clipboard now works better.
Version 5.5.54, released July 10, 2017
- Fix: Visual Studio integration could fail during installation if only Visual Studio 2012 or 2013 was installed on the machine.
- Fix: When profiling a 32-bit F# application, the profiled process could crash due to incorrect tracking of tail-call functions.
- Fix: Improved speed and stability when importing 32-bit memory dumps.
Version 5.5.50, released June 16, 2017
- New: Improved presentation of live instances and live bytes information in the real-time graph.
Change: Improved the performance of the call stack tracker.
Under certain conditions, the call stack tracker could be slower than the old (v5.0) call stack tracker. Now it should always be faster.
- Change: Live bytes graph is included by default in the real-time view.
- Fix: Call stack information for intermediate snapshots were not properly released from memory while profiling.
- Fix: Minor real-time graph improvements.
- Fix: The time offset of the overview graph shown in the scrollbar in the real-time view was not correctly updated when selecting a different time origin.
- Fix: Fixed an issue where the AppDomain was not correctly detected for an allocated instance (when AppDomain tracking was enabled).
Fix: Fixed a conflict between .NET Memory Profiler and DevExpress CodeRush.
If both the .NET Memory Profiler and the CodeRush extension were installed in Visual Studio, they would not work correctly.
Version 5.5.46, released June 2, 2017
- Change: All time offsets from external sessions are now selectable for the "current" session when editing a profiler project.
- Change: Improved availability of commands in the profiler projects window and project context menu.
- Change: Minor color changes in the default real-time layouts.
- Fix: Fixed a memory leak that cold occur when working with real-time layouts.
- Fix: Re-added "Always run AnyCPU applications as 32-bit" to the profiler preferences in Visual Studio.
Fix: Included missing files related to debug profiling in Visual Studio
The missing files caused debug profiling to fail when profiling applications marked as AnyCPU where "Prefer 32-bit" was not selected.
- Fix: Fixed an InvalidOperationException that could occur when showing tooltips in the instance graph.
- Fix: NmpCore did not work correctly if the full .NET Memory Profiler was installed on the same machine.
- Fix: Attaching to a remote process using NmpCore could fail, due to incorrect process validation.
- Fix: When a peak snapshot was collected, the memory analysis was not performed.
- Fix: Real-time layouts were not correctly initialized when creating a new profiler project.
- Fix: Fixed a minor calculation error in the total managed memory statistics numbers (e.g. Total bytes, Live bytes).
- Fix: Handle an error that could in rare cases occur when performing initial comparison in a newly opened session file.
Version 5.5.37, released May 10, 2017
Version 5.0.156, released March 27, 2017
- Fix: If size of snapshot data was expanded from less than 4 GB to more than 4 GB during a comparison, an exception could occur and the comparison failed.
- Fix: An error could occur while downloading snapshot data from a remote session, which would prevent the snapshot from being loaded.
Version 5.0.153, released January 10, 2017
- Fix: Due to a change in a component library used by .NET Memory Profiler, the toolbar buttons in the profiler projects window were not correctly enabled.
Version 5.0.152, released December 20, 2016
- Fix: If cached duplicate instances information or held bytes information was saved at the same time as the session file is saved, the session file could become corrupt.
- Fix: Empty large heap segments are now presented as large heap overhead, instead of just managed heaps overhead.
Version 5.0.144, released September 16, 2016
- Fix: Importing a memory dump or attaching using Debugging Tools on a Windows 10 system could cause the BitSizeHelper and ProfilerAttach helper processes to crash.
Version 5.0.142, released April 27, 2016
- Fix: Profiler environment settings was not correctly restored when profiler ASP.NET using IIS and Windows services. This could cause problems with subsequent profiling sessions.
- Fix: An unhandled error could be shown if a new type or filter was selected while the instances list was updated.
- Fix: Aborting a long running sort on the instances list could prevent future sorting of the instances.
- New: Identifying Windows 10 version of Debugging Tools for attach and memory dump import.
- Change: Removed dependencies on PsApi.dll and DbgHelp.dll in the profiled process.
- Change: Fixed a typo in the interned string analyser.
Version 5.0.133, released February 9, 2016
- New: It is now possible to filter the types in the Overview based on whether source is available for the type or if the type is externally visible.
New: Two new filters added: "Instances and allocations of types with source" and "Instances allocated by methods with source".
The filters will only be shown if symbol files have been loaded for at least one module. If they are still not shown, use the command "Profiler->Manage filters" to add the filters.
- Fix: Selecting "Visual Studio StartUp project" when starting guided profiling could cause an ArgumentNullException.
- Fix: The "Profile Visual Studio startup project" option under "Start new profiling session" was disabled, even if a startup project existed in the loaded solution.
- Fix: Profiling applications with the resource tracker enabled could crash the application when running under Windows Vista.
Fix: Selecting call stack frames visibility in the call stacks views and methods view did not work correctly.
Now it is possible to select which frames to include using the context menu in the call stacks views or the methods view, or by using
the command "View->Call stack functions".
- Fix: A NotImplementedException could sometimes be thrown when working with the snapshots views.
Version 5.0.128, released December 10, 2015
Fix: Updating the graph cache in a complex instance graph could cause the UI to hang for a long time.
A bad hashing function could cause an O(n^2) update operation instead of an O(n) operation, and the update was mistakenly performed in the UI thread..
- Fix: Importing a memory dump that was created during a GC could cause the type of many instances to be <Unknown>.
- Fix: An InvalidOperationException could sometimes be thrown when showing the Real-time view.
- Fix: An unhandled exception could occur when copying analysis issues text to the clipboard from a tooltip.
Version 5.0.125, released December 3, 2015
- Fix: Fixed regression where the shortest root paths under Type details only presented a single instance as reference, even when multiple root paths was merged.
- Fix: Fixed memory leak where session window was not fully GCed when closing a session.
- Fix: Improved support for multiple runtimes in a single process, e.g. a Silverlight runtime and a .NET runtime.
- Fix: Fixed a VerificationException that could occur when the dispose tracker is enabled when profiling Silverlight applications and other low-trust applications.
Version 5.0.122, released October 23, 2015
- New: It is now possible to use 64-bit IIS Express when profiling using IIS Express.
- New: When profiling a Web application from Visual Studio the profiler will use the 64-bit version of IIS Express, if the option "Web Projects\Use the 64 it version of IIS Express for sites and projects" is enabled.
- Change: Text rendering now uses display optimized mode, which makes the text presentation less blurry.
- Fix: Some IIS Express related settings were not correctly stored in profiler projects, which could casuse problems when profiling IIS Express using a project.
Version 5.0.117, released September 25, 2015
- Change: Default layout of a snapshot from an attached process now presents New/Removed information in the Overview, if full instance tracking is enabled.
- Change: Default layout of a snapshot from an attached process includes unreachable instances information, if any unreachable instance exists.
Change: Significantly reduced the number of allocations performed when calculating the shortest root paths for a type or filter
This noticably improves the responsiveness of the UI while the calculation is performed in the background.
Change: It is no longer possible to ignore analysis issue based on a root path, instead it is possible to ignore issues based on referring instances.
Calculating a root path for ignored issues could cause the analysis to become very slow, if the issue is found for many instances.
- Change: Significantly improved the performance of the methods tree when presenting many methods in a flat list ("Show hierarchially" not selected).
- Fix: A NullReferenceException could be thrown by the instance graph when closing a session window.
Version 5.0.114, released September 1, 2015
Fix: Static field roots for partially loaded types were never included in a snapshot.
If a type was partially loaded during a snapshot, static field roots would never be collected for this type. Now static
field roots will be collected if the type is fully loaded in a subsequent snapshot.
Fix: Table layouts saved incorrectly on program exit.
This could cause the wrong table columns to be shown by default. Select "View->Layout->Reset layout" (or "View->Profiler layout->Reset layout" in Visual Studio")
to correct incorrectly saved layouts.
- Fix: Improved performance when presenting many comments in the real-time view.
Version 5.0.112, released August 26, 2015
- Fix: Improved support for Visual Studio 2015.
- Fix: Improved support for .NET Framework 4.6.
- Fix: Improved fields and array handling when importing memory dumps and attaching using Debugging Tools.
- Fix: Significantly reduced memory usage when presenting instance details for instances with large instance graphs.
Fix: Avoid allocation of large memory blocks in the profiled process.
Allocations of large memory blocks can cause out-of-memory errors if running out of virtual address space.
- New: "Interned string" analysis issue added.
Version 5.0.107, released July 17, 2015
Change: To avoid conflicts with projects that use the async extensions package, .NET Memory Profiler now requires .NET Framework 4.5.
This means that .NET Memory Profiler no longer can run under Windows XP/Windows Server 2003. However NmpCore (including remote profiling) still supports Windows XP/2003 and you can still
use .NET Memory Profiler to profile processes running under .NET Framework 2.0 and later. If you still need
to run .NET Memory Profiler under Windows XP/2003, please contact us at firstname.lastname@example.org.
- Fix: When importing a memory dump or attaching to a process using Debugging Tools, the helper process ProcessAttach.exe occassionally crashed, causing the import/attach to fail.
- Fix: An error could occur if a session was saved or stopped while performing background analysis.
- Fix: An error could occur if running the profiler on a system where number grouping size is set to zero in regional settings.
- Fix: It is now possible to overwrite a session file that has been previously saved during the same session.
- Change: Progress tracking for snapshot collections has been improved.
- Change: Several minor UI improvements.
Version 5.0.98, released June 24, 2015
- New: Added the possibility to select AppPool when profiling IIS.
New: Added new command line arguments to specify AppPool when profiling IIS from the command line.
The new command line argument “/apppools” (shortform “/ap”) can be used to specify the AppPools to profile. It accepts a semicolon delimited list of AppPools to profile.
For example, you can use the command line "NmpCore /asp /ap:DefaultAppPool" to profile the default AppPool.
New: Added new command line arguments to specify which processes to profile.
The new command line argument, “/profileprocess” (or “/pp”) can be used to specify which processes to profile (/pp:first, /pp:all, /pp:started).
Fix: The dispose tracker has been updated to work with the latest .NET Framework release.
A recent .NET Framework update caused the dispose tracker to fail to track disposed instances.
- Change: The time-marker is now enabled by default in the real-time view.
- Change: Improved the performance of the real-time view.
- Change: Significantly improved performance and reduced memory usage of the held bytes calculations for types.
Change: Several time consuming UI operations have been parallelized and/or are performed as a cancellable background operations.
This significantly improves the responsiveness of the profiler when working with large snapshots.
Fix: Very large objects enabled in the profiler executables (NetMemProfiler.exe, NmpCore.exe, NetMemProfilerConsole.exe).
This makes it possible to work with larger snapshots.
Fix: NetMemProfiler.exe is now correctly signed.
NetMemProfiler.exe was mistakenly not signed in previous 5.0 releases, which caused an "Unknown publisher" prompt when running the profiler elevated.
Fix: WPF theme is no longer modified at the root level when running within Visual Studio.
The WPF theme was mistakenly modified by the profiler VS package, which could cause incorrect colors for other elements in Visual Studio.
Version 5.0.80, released May 8, 2015
- New: A link to show the details of all held instances has been added to the Type and Filter details view.
- Fix: It is now possible to use the top-row filter to filter on instance address in the instances list.
- Fix: Sessions can now be restored (again) if the profiler terminates unexpectedly.
Fix: Real-time tracker could fail to count some instances that were created implicitly by the .NET runtime
This could cause a negative count of total instances (and a very high total bytes count due to unsigned integers) in the real-time view.
- Fix: Importing multiple memory dumps into the same session could cause an exception under some circumstances.
Version 5.0.78, released April 27, 2015
- Fix: A NullReferenceException could occur when changing the magnifier type in the instance graph.
- Fix: An InvalidOperationException could occur when copying text (including a hyperlink) from an info panel.
- Fix: If the resource tracker failed to initialize a process, an error would occur in the user interface and the profiling session stopped.
Fix: Re-loading the layout of panels in the real-time view could cause an exception.
This could for instance happen if the grid view panel was floating.
Version 5.0.74, released April 20, 2015
New: It is now possible to show unreachable instances in the Type details view.
If there are any unreachable instances in the snapshot, an "Include unreachable instances" option will be available under
the instances list.
- Fix: A NullReferenceException could occur when collecting the final peak snapshot after debug profiling has stopped.
- Fix: Resource instances list was not correctly updated when collecting or changing a snapshot in a session.
- Fix: Real-time data was not correctly cleared when the time selector was moved outside the data range.
- Fix: Layout of the real-time view is now correctly saved and restored.
- Fix: A NullReferenceException could occur in the instance graph when shutting down the profiler.
- Fix: Duplicate sort entries was sometimes added to the "Sort stacks by" drop-down list.
Version 5.0.73, released March 26, 2015
- Fix: A NullReferenceException could occur when working with an old session file and displaying instance fields of an instance without field data.
Fix: An ArgumentException could occur when displaying instance fields and of an instance with unknown fields.
Fields may be unknown when importing memory dumps or attaching to a process using Debugging Tools.
- Fix: The Recent sessions sub-menu in the main menu is now populated.
Version 5.0.72, released March 24, 2015
- New: New WPF based user interface
- New: Easily run unit tests under the profiler using the Visual Studio test runner
- New: Remote profiling
- New: Profile multiple processes within the same session
- New: Work with multiple sessions in the standalone profiler
- New: Improved real-time presentation
- New: Support for snapshots that are larger than 4 GB
- New: Support for Visual Studio 2015 and .NET Framework 4.6
- New: Support for Azure compute emulator projects in Visual Studio
- New: More efficient collection of instance fields data and a simplified UI to specify what to collect.
New: New Enterprise edition
The Enterprise edition includes features such as: Visual Studio unit test runner, multi-process profiling,
multiple sessions in standalone profiler, Azure compute emulator profiling. For more information, see the
Version 4.6.86, released September 8, 2014
- Fix: An access violation could in rare cases occur when a type was initialized in the profiled process.
- Fix: Improved support for import and attach of large 32-bit processes.
- Fix: Extract static fields could fail when importing memory dumps or attaching using Debugging Tools.
- Fix: Minor improvement related to the storage of registration information.
- Change: Increased timeout when starting and stopping services.
Version 4.6.77, released May 14, 2014
- Fix: Symbol files were not loaded correctly if a cache folder was not specified for the Microsoft symbol store.
New: Prompt for symbol settings when running with the resource tracker for the first time.
Symbol settings must be specified to get accurate resource allocation call stacks.
- Change: Improved performance when viewing Type details in a session with many types.
- Change: Improved performance when viewing resource instance details in a large session.
- Change: Minor improvements to the dispose tracker.
- Fix: An exception could occur when copying instance graph to clipboard.
Version 4.6.71, released April 8, 2014
- Fix: Static fields not always correctly reported when importing a memory dump or attaching using Debugging Tools. This could cause an unhandled exception in the profiler.
Version 4.6.69, released February 25, 2014
- Fix: Static enum fields not based on int or uint were incorrectly reported, and could cause the profiling session to stop.
Version 4.6.68, released February 11, 2014
- Fix: Static primitive value types fields were not correctly collected when importing memory dumps. This could cause an exception in some cases.
- Fix: Minor improvement of the presentation of native memory when importing a memory dump or attaching using Debugging Tools.
- New: Static enum fields are now also included when collecting a heap snapshot and importing memory dumps.
Version 4.6.66, released December 17, 2013
New: Added command line arguments to start Silverlight profiling from the command line (including NmpCore)
The new commands are /slx "<path to XAP-file>" and /slu "<URL of Silverlight application>". The argument
"/oob" can be used to run the Silverlight application as "out-of-browser".
New: Added an option to only include new issues in the memory analyser
The command "Profiler->Only show new issues" can be used to only show issues for instances that were allocated
after the comparison snapshot.
- Fix: Added a fix for GCHandle identification, since GCHandles are no longer reported as GCHandle roots by .NET runtime 4.0.30319.18408.
- Fix: Fixed an error that could cause a Win32Exceptin when showing dialogs within Visual Studio.
Version 4.6.63, released December 12, 2013
- Fix: The predefined list of ignored framework issues failed to load, causing too many issues to be presented.
Version 4.6.59, released October 22, 2013
Fix: An access violation could occur in the profiled process when heap utilization tracking was enabled, and more than 256,000 instances were collected during a GC.
Version 4.6.58, released October 11, 2013
New: Support for Visual Studio 2013
New: All static fields are collected when importing or attaching to a process running under .NET runtime 4.0.30319.17379 or later.
Previously only reference fields were collected. .NET runtime 4.0.30319.17379 is included with .NET Framework 4.5, and will be used for processes using .NET Framework 4.0 or later.
- Change: AppDomain and Thread information is presented for static fields, when importing a memory dump, or attaching using Debugging Tools.
- Fix: Fixed an InvalidCastException that could sometimes occur when importing a memory dump, or attaching using Debugging Tools.
- Fix: A pending peak snapshot is collected when profiling is stopped in NmpCore.
- Fix: Added implementations for a missing debug interface, needed for Debug profiling.
Version 4.6.52, released September 5, 2013
Fix: Reporting memory regions could take a very long time when profiling a 32-bit process from Visual Studio, on a 64-bit OS prior
to Windows 8/Windows Server 2012.
Version 4.6.48, released August 15, 2013
New: Native memory statistics presented under the Native memory view.
The statistics include information such as managed heap usage and utilization, fragmentation and largest allocatable memory block.
- New: Native memory information is retrieved when importing 64-bit memory dump files.
- New: Native memory information is retrieved when profiling a 64-bit process from a 32-bit process (i.e. from within Visual Studio)
- New: Support for Windows 8.1.
- New: Support for .NET Framework 4.5.1.
New: Instance generation is collected even when attaching to a process or importing a memory dump.
Previously the instance generation was only collected when running the profiled process under the profiler, with instance tracking enabled.
- Fix: An InvalidCastException could occur when viewing a static pointer field.
Version 4.6.40, released June 19, 2013
Change: "Collect gen #0 snapshot" has been re-enabled for .NET Framework 4.5.
It was previously disabled when .NET Framework 4.5 was installed, due to a pre-beta bug in the .NET runtime.
Change: When combining nodes in graph, the type name is used when sorting combined instances.
This prevents unnecessary visual changes in the graph when the content is updated incrementally.
- Change: Improved synchronization when adding duplicate instances issues, to prevent user interface from becoming unresponsive.
- Fix: Fixed a buffer overrun that could occur with long method names, when importing memory dumps or attaching using Debugging Tools
- Fix: Syncing the graph with the root path, call stack, and instances list, did not work correctly when the graph window was maximized.
- Fix: Fixed an access violation that could occur when multiple modules were loaded simultaneuosly in separate threads.
- Fix: Selection in instances list under Type/Filter details not correctly updated when the list changes.
- Fix: "Show hexadecimal values" now works correctly for static fields under Type details.
Version 4.6.29, released May 28, 2013
- Fix: If a process contained static char fields with non-ASCII characters, the second snapshot could fail.
Version 4.6.26, released May 8, 2013
- Fix: An exception could occur when renaming snapshots while saving a session
Version 4.6.25, released May 6, 2013
- New: Combined instances graph for Type and Filter details
- New: Support for Windows Store app profiling
- New: Identification of closure and state types
- New: Information about closure types is used by memory analyser
- New: Improved duplicates analyser
- New: Static field values presentation under Type details and Instance details
- New: Instance addresses can be included when importing memory dumps
Version 4.5.215, released April 23, 2013
New: Added an option to select whether to run AnyCPU as applications as 32-bit or 64-bit when debug profiling
Debug profiling functionality is limited when running as 64-bit. If possible, it is recommended that AnyCPU applications are run as 32-bit.
- Fix: Fixed an exception that could occur when unloading AppDomains while using debug profiling.
- Fix: The workaround for a memory leak in sos.dll prior to .NET runtime 4.0 was disabled and has now been re-enabled.
Version 4.5.213, released April 5, 2013
Change: If Ctrl-C or Ctrl-Break is pressed in a .NET Memory Profiler console window (e.g. NetMemProfilerConsole or NmpCore), the profiler will
stop gracefully, allowing you to save the session file.
Change: If a .NET Memory Profiler console window is closed, the profiler will
perform a quick stop and detach any attached processes. The session file will not be saved, but the auto-saved session can be recovered by restarting the profiler (with full UI).
- Fix: Fixed an issue with a case-sensitive file extension, which could prevent the profiler from opening sessions and projects from the command line.
- Fix: The About window and splash screen always stated that the "Professional" edition was active, even when running as the "Standard" edition.
Version 4.5.211, released February 21, 2013
Fix: The instance graph was not correctly cleared when the selected instance no longer exists (e.g. when selecting a new snapshot). This could cause
an exception when moving the mouse over the graph.
- Fix: Tooltips in instance graph did not always appear if the selected instance had no non-shortest paths.
- Fix: If instance data was not included in an auto-saved session file (e.g. by using the command line parameter /iid-), the session file could become corrupt.
Version 4.5.207, released February 18, 2013
Change: Timeout value for API attach has been set much higher, and the attach has been made cancelable.
Retrying attach did not work very well, so a longer time-out value is used instead.
- New: Added ignorable framework issue for resurrected OverlappedDataCache.
- Fix: Managed threads are identified again in the Native memory view.
Version 4.5.204, released February 12, 2013
- Change: Retrying attach using API if the attach fails with a timeout error.
- Fix: Weak roots were not correctly collapsed in the instance graph, which could create very large graphs.
- Fix: Debug profiling could cause an access violation when running under Windows XP.
- Fix: An exception could occassionally occur when async operations finished after the profiler comparison had changed.
- Fix: It is no longer possible to close the profiler wait form by using Alt-F4, as that could cause an exception.
- Fix: When starting IIS Express profiling the profiler could connect to the wrong process (i.e. IISExpressTray instead of IISExpress).
Version 4.5.194, released January 18, 2013
- Fix: Editing the port number of WebDev.WebServer when starting Silverlight profiling would always cause a validation error.
- Change: If save fails when closing a session window, the window will not be closed. This gives the user an opportunity to save as another file.
- Change: If an active session in a profiler project overwrites another session file in the project, multiple entries for the same file will no longer be added.
- Fix: A minor layout error of dock windows at start up has been fixed.
Version 4.5.192, released December 7, 2012
- Fix: Higher level non-shortest root paths were not always calculated correctly when the instance graph contained weak reference roots.
- Fix: Third party assemblies (DevExpress) in the GAC were removed when installing an upgraded version (Microsoft KB 905238).
- Change: The "Potential memory leaks" filter is not included under the Overview page, unless a potential memory leak has been detected by an assertion.
Version 4.5.189, released November 22, 2012
- Fix: Added implementations for a few missing debug interfaces, needed for Debug profiling.
- Fix: Removed dependency on .NET Framework 3.5 when integrating with Visual Studio 2005 (only .NET Framework 2.0 is now required).
- Change: Debug profiling commands removed from Visual Studio 2005 integration, since debug profiling is not available under VS2005.
Version 4.5.186, released October 26, 2012
- Fix: Fixed a problem with the obfuscator, which prevented the profiler from running under the client profile of .NET Framework 4.0.
- Fix: Minor improvements to the licensing user interface.
Version 4.5.184, released September 26, 2012
- New: Support for very large objects in .NET Framework 4.5 (instance size > 4GB).
New: Dynamic references (using ConditionalWeakTable) are included as additional fields for instances.
They are presented in the instance details view (instance graph, references, referenced by, and fields)
Change: New implementation of Debugging Tools import and attach, to avoid a memory leak in the .NET runtime included with .NET Framework 4.5.
The new implementation is significantly faster and provides more detailed information.
- Change: Weak roots are included in the instance graph (for all instances that are part of a shortest root path).
- Fix: Included some missing files in NmpCore. The files are required for the resource tracker to work when running NmpCore on Windows XP.
- Fix: Instances in the finalizer queue was tagged as both "Instance queued for finalization", and "Indirect finalizer instance".
- Fix: Roots not always correctly presented under "Referenced by" in the Instance details view, when using the profiler project window to compare snapshots.
Version 4.5.179, released August 31, 2012
- New: Support for IIS Express 8.0.
- Change: If the collect-and-stop command line argument is specified, the max snapshots setting will not limit the number of auto-collected snapshots.
- Change: NetMemProfilerConsole prints progress messages in console window, instead of showing a message window.
- Fix: Storing additional data (e.g. duplicate instances information) in session files, could cause the session file to be corrupted.
- Fix: The "Enable resource tracker" setting was not correctly stored in profiler project files.
- Fix: Fixed a version mismatch in the unmanaged resource stack walker, which could cause the stack walker to fail when loading symbol files.
- Fix: If a non-existing process was specified on the command line when attaching, an "unexpected exception" error window was shown, instead of an error message.
Version 4.5.176, released August 10, 2012
New: Added the option to only detect trivial duplicate instances, which will make the duplicate instances analysis much faster.
Trivial duplicates detection is enabled using the Profiler->Only detect trivial duplicates command.
Fix: Fixed a problem with snapshots with more than 2 GB of data.
Up to 4 GB of data can now be collected for each snapshot.
Change: Temporary snapshots that are saved by an active session are no longer compressed.
Compressing snapshot data could cause snapshot collection to take much longer time. Now snapshot data is only compressed when saving the session file.
- Fix: Fixed a NullReferenceException that could occur when attaching using Debugging Tools with command line parameters (i.e. using the /da argument).
Version 4.5.173, released July 11, 2012
- Change: Debugging Tools installer can now also be downloaded from the .NET Memory Profiler site (as an alternative to installing the Windows SDK).
Fix: Symbols were not correctly downloaded from symbol server, which could cause native call stacks to
be less detailed.
- Fix: Links in info views were not always correct, preventing some information in the view from being presented.
Version 4.5.169, released July 2, 2012
- Fix: An ArgumentException could very occassionally occur when updating the status bar in Visual Studio.
- Fix: Showing the details of an unmanaged resource in a session file saved by version 4.5 could cause an exception.
- Fix: Fixed a problem with the native stack walker that could cause a crash on Windows XP.
- Fix: Fixed an error that could cause the session file to become corrupt when collecting multiple snapshots.
- Fix: Native memory information was not always correctly presented when attaching to a process using Debugging Tools and collecting multiple snapshots.
Fix: Due to a memory leak in the .NET Runtime that is included with .NET Framework 4.5, it is currently not possible to attach or import using Debugging Tools on machines
where .NET Framework 4.5 is installed.
A workaround for this issue will be created if it still exists in the RTM version of .NET Framework 4.5.
- Fix: A workaround for another memory leak in the .NET Runtime (when attaching or importing using the Debugging Tools) failed for processes using .NET Runtime 2.0.
- Fix: The unreachable instances columns were not included by default when opening a session file that contained unreachable intances.
Version 4.5.162, released June 20, 2012
- Fix: Changed signature of 3rd party library (DevExpress) to avoid conflicts with other installations when running within Visual Studio.
Version 4.5.158, released June 14, 2012
- Fix: Attaching and importing memory dumps could cause the profiler to hang if the Debugging Tools were not installed on Windows 8.
- Fix: Links in info views did not work correctly when running under Windows 8.
- Change: Added the possibility to specify the sos.dll file when importing memory dumps.
Version 4.5.155, released June 8, 2012
- Fix: A subscription expired message was sometimes shown even if the subscription was already renewed.
- Change: Visual Studio 2012 integration tested and the text "Visual Studio 11" changed to "Visual Studio 2012".
Version 4.5.154, released June 4, 2012
- Fix: A missing implementation of a Visual Studio debug interface could cause debug profiling to fail.
Version 4.5.153, released May 29, 2012
New: Debug profiling.
Debug profiling allows you to launch the debugger and profiler simultaneously and get profiler integration in
the watch windows (Watch, Locals , Auto, and debugger tool tips) – and you can collect snapshots while you have stopped at a breakpoint
New: Duplicate instances analyzer.
Optimize memory usage by getting information about duplicate instances. This includes simple duplicates like
strings and boxed primitive values, as well as complex duplicate instance graphs.
New: Presentation of total held instances and bytes for all types and filters.
Held bytes information is calculated and presented for each type and filter in the Overview.
This often gives a better idea of which types are consuming a lot of memory.
New: New session file format.
The session file format is completely redesigned. It is faster, the session file is
much smaller (it has less data and data is compressed) and there is no longer a 2 GB file limit
- New: Visual Studio 11 integration.
Version 4.0.133, released May 20, 2012
Change: Instance data collection rules were not saved correctly
when editing session settings.
Version 4.0.131, released April 18, 2012
Change: Added support for Debugging Tools included in the Windows
Fix: If a snapshot collection failed, the temporary file containing
instance data was mistakenly closed. Selecting new snapshots could then cause a
"closed file" error.
Fix: Heap utilization data was counted multiple times when a new
filter was created, which could cause > 100% utilization.
Fix: When unloading AppDomains, module metadata was not properly
released for modules containing Dispose methods.
Fix: Failed to evaluate many static fields when attaching to a
process using the profiling API.
Fix: An access violation could occur within the profiled process
if a snapshot was collected while an AppDomain is being unloaded.
Version 4.0.125, released March 5, 2012
Fix: Snapshot collection failed when running under .NET Framework
4.0 or 4.5, when the .NET Framework 4.5 preview has been installed (runtime version
4.0.30319.17379 or later).
Version 4.0.124, released February 23, 2012
New: IISExpress support added for website projects in Visual Studio
(in addition to web applications).
Fix: Column customization window in Visual Studio became hidden
behind the Visual Studion window.
Fix: The native memory view now analyses memory up to 4GB in 32-bit
processes marked as LARGEADDRESSAWARE.
Fix: A NullReferenceException could occur in a truncated instances
list under Type details.
Fix: Better error messages if project profiling in Visual Studio
cannot be started.
- Fix: Better error message if a software triggered snapshot fails.
Fix: An ArgumentOutOfRangeException could occur if the size of
the scrollbars in the plot became too small.
Version 4.0.119, released January 13, 2012
New: The resource tracker now correctly tracks handles created
by CreateProcess and CreatePipe.
Fix: The resource tracker did not detect that the HDC was closed
when calling CloseEnhMetaFile.
- Fix: A synchronization error in the resource tracker has been fixed.
Fix: An InvalidCastException could occur when profiling a 64-bit
process and viewing the fields of an instance containing a UIntPtr field.
Version 4.0.118, released November 16, 2011
- New: Added support for ASP.NET profiling using IIS Express.
- Change: The maximum session file size has been increased to 4GB.
Fix: A better error message is shown if the maximum session file
size is exceeded.
Version 4.0.114, released October 10, 2011
Fix: Fixed an access violation that could occur when a unloading
Fix: Initializing security for temporary directory created for
NmpCore, to provide better support for profiling services running under another
Fix: Command line arguments parser did not parse arguments with
separated values correctly.
Version 4.0.111, released September 26, 2011
New: The profiler now more accurately waits for pending finalizers
when collecting a full snapshot.
This allows the analysis issue "Instances queued for finalization" to better indicate
whether this is normal behaviour (i.e. an informational issue) or a problem with
slow, excessive, or stuck finalization (i.e. a warning issue).
New: A link has been added to the "Held instances" info text under
type instance details. Clicking the link will show a filter for all instances held
by the selected instance.
Change: When ignoring an analysis issue using a root path or allocation
stack that contains generic parameters, all instantiations are now ignored.
Fix: Tool tips were missing for the type name when grouping instances
by type under the Filter details view.
Fix: An exception could occur if the comparison changed while retrieving
call stack details in the Call stacks/Methods view.
Fix: The "Disposed" column was shown for disposable types under
the Type details view, even if the dispose tracker was not enabled.
Fix: The native memory trees under the Native memory view didn't
scale correctly when running under a high-DPI setting.
Fix: Analysis issues were not completely updated in the Type details
view and the Type instance details view if a type or instance was shown before the
analysis was finished.
Change: The full path of memory mapped files and loaded libraries
is no longer limited to 260 characters.
Fix: Improvements in the instance graph user interface, including
fixes for animations that "jumped" to an incorrect start positions.
Fix: An exception could occur if an interactive graph operation
(e.g. expand nodes) was started while the graph was being collapsed.
Fix: Runtime filter was not used in some locations, e.g. the instance
list under Type/Filter details view.
Version 4.0.108, released September 12, 2011
Fix: Static fields not always retrieved when profiling a pre-.NET
4.0 64-bit process due to a Windows 7/Windows Server 2008 R2 security update.
The Microsoft security update MS11-044 included a change in the .NET runtime that
could cause static field evaluation to fail.
Fix: Changing AppDomain or Runtime did not affect the real-time
graph, unless at least one snapshot was collected.
Fix: Call stack generic function names were incorrectly encoded,
'<' was presented as '<' in the tooltip.
Fix: NullReferenceException could occur when showing tooltips for
the "[truncated]" entry in an instance list.
Fix: Ignoring analysis issues by call stack frame did not work
Fix: Call stack could become incorrect if an exception was thrown
and handled by a dynamic method.
Under certain circumstances an exception could also occur in the profiled process.
Change: Scroll position is no longer reset in the info views that
present analysis issues.
Version 4.0.102, released September 2, 2011
New: Added MemProfiler.AreAssertionsEnabled property to detect
whether memory assertions are available.
Fix: Instance data was mistakenly included in some autosaved snapshots,
even if IncludeInstanceData was false.
Fix: Fixed an error in profiler attacher that could cause the attacher
Version 4.0.96, released August 26, 2011
Fix: Improves the possibility to add registration information during
installation by using the REGNAME and REGKEY properties.
- Fix: Better detection of Silverlight installation.
Version 4.0.94, released August 25, 2011
Fix: Fixed a problem with initialization of environment variables
when profiling a Windows service.
- Fix: Minor UI fixes.
- Change: Common 32/64-bit installer available as an executable launcher.
Fix: Symbols were not always loaded when profiling within Visual
Version 4.0.89, released August 19, 2011
- Fix: Minor UI fixes.
- Fix: Fixed an exception that could occur during license registration.
Fix: Visual Studio 2010 integration failed to install if the Visual
Studio help was not initialized.
Fix: If sorting on held instances/bytes in the Type/Filter details
instance list, the message "Filtering instances" would appear repeadetly, without
making any progress.
Version 4.0.82, released August 12, 2011
- New: Instance graph
- New: Guided profiling
- New: Instance and allocation filters
- New: Support for Silverlight profiling
New: Faster and more secure attach to process, using the .NET 4.0
New: Profiling levels for balancing the amount of data collected
against the performance and memory overhead of the profiler
- New: Support for multiple .NET runtimes in the same process
New: Improved real-time data collection, with AppDomain and runtime
filtering and much improved performance
- New: Peak snapshot collection
- New: Dependency property evaluation
- New: NmpCore tool
Version 3.5.166, released November 23, 2010
Fix: If profiler enhanced NGen images has been installed (using
ngen /profile), the dispose tracker did not work correctly.
Version 3.5.162, released October 17, 2010
Fix: If a specific mscordacwks.dll file was selected and the file
no longer exists, an unhandled exception occured.
Version 3.5.160, released October 6, 2010
Fix: Added a workaround related to static fields evaluation for
.NET runtime 4.0, to avoid an access violation when evaluation roots.
Version 3.5.159, released August 25, 2010
Fix: Automatically disables features that are not available when
profiling a Silverlight application.
Declarative assertions, the unmanaged resources tracker, and gen #0 snapshots are
currently not available when profiling Silverlight.
Fix: Method roots was not correctly identified when running under
.NET Framework 4.0.
Version 3.5.157, released August 5, 2010
New: Limited support for Silverlight profiling.
It is now possible to profile a Silverlight application using IExplore.exe and SLLauncher.exe
Fix: Removed dependencies on assemblies not included in .NET 4.0
Now it is possible to use the profiler on a system that only has the client profile
of .NET 4.0 installed.
Fix: Data collection rules didn't work correctly for specific array
Fix: The number of root referrers in the instance details view
has been limited
This prevents the user interface from becoming very slow when an instance has a lot
of root referrers.
Fix: Better lookup of WebDev.WebServer.
Now the development server included with Visual Studio 2010 is used for .NET 2.0
sites as well.
Version 3.5.151, released June 15, 2010
Fix: Type name of arrays of nested types and generic types was
not correctly presented in the Types view
The declaring type and the generic type arguments were not correctly included in
- Fix: Corrupt session files created by v3.5.131 can now be loaded.
Version 3.5.150, released May 25, 2010
New: If more than one Web development server (WebDev.WebServer)
is found the user will be presented with the option to select development server.
When profiling a Visual Studio ASP.NET project, the development server is automatically
selected based on the target framework of the project.
Fix: A file was missing in the previous installer, which caused
problems with the dispose tracker when profiling a .NET 1.x application.
Version 3.5.144, released March 31, 2010
Fix: All dependencies of .NET Runtime 2.0 removed, it is now possible
to install and use the profiler on a system with only .NET 4.0 installed.
Previous version had a few left-over dependencies that required the .NET 2.0 runtime
to be installed, even if both the profiler and the profiled process was running
under .NET 4.0.
Fix: When selecting Cancel in the evaluation window, the profiler
did not exit completely.
Version 3.5.136, released February 22, 2010
Fix: Links to additional information about undisposable types classification
did not work correctly in the tooltips in the Types/Resources view.
Fix: Saving session files with multiple snapshots could cause corrupt
files to be created.
Fix: The live bytes sum in the status bar was not correct (but
the column sum value correctly reflected the total number of live bites).
- Fix: Better support for command line response files.
Fix: Fixed an additional problem that could cause an exception
during initialization of Managed C++ programs under rare circumstances.
New: Column sum values are presented for the columns "New live
bytes" and "Removed live bytes" in the Types/Resource view.
Version 3.5.131, released January 29, 2010
New: A new memory analyzer will provide information about instances
in the finalizer queue.
Fix: When switching away from certain settings pages in Visual
Studio (Tools->Options), an endless WM_GETDLGCODE loop could occur, causing Visual
Studio to freeze.
Fix: User interface was not correctly updated when initializing
symbols store cache location.
Fix: Fixed a problem that could cause an exception during initialization
of Managed C++ programs.
Fix: Under rare circumstances the native stack walker could get
stuck in an infinite loop.
Version 3.5.130, released January 11, 2010
Fix: Due to an error introduced in v3.5.115 the native stack walker
failed to use newly downloaded symbols from the Microsoft symbol store.
This error caused native stack information to be less detailed for operating system
DLLs and .NET runtime DLLs.
Fix: Instances only reachable from a WeakReference was considered
reachable when attaching and importing
This could also cause problems when calculating held instances..
Change: Significantly improved performance when analyzing held
instances in large snapshots.
Change: The number of background calculations is limited by available
Some background calculations consumes significant amounts of memory. To minimize
the risk of an out-of-memory error, the calculations are not performed simultaneously
in a low memory condition.
Change: The number of instance issues presented by the comparison
analyzer has been limited to 10,000 issues per type.
Change: Decreased the memory consumption and largest memory block
allocated when attaching to a process and importing memory dump files.
Change: Tries to locate Debugging Tools before importing a memory
dump file, to avoid DbgEng.dll and DbgHelp.dll version mismatch on Windows XP.
Fix: Improved matching of types when comparing snapshots from different
Version 3.5.115, released November 24, 2009
Fix: When calculating held instances, weak roots were incorrectly
considered to hold an instance.
Change: All shortest root paths are considered when sorting the
root paths in the Type details view, even if only the 1000 first root paths are
This will consume a bit more memory, but will provide better type root path information.
Version 3.5.114, released November 18, 2009
Change: A specific mscordacwks.dll can be selected when importing
memory dumps, instead of selecting the folder where it is stored.
The name of the mscordacwks.dll file is also no longer important, .NET Memory Profiler
will make sure that the name is correct.
New: Added the possibility to import 64-bit memory dumps containing
a 32-bit .NET process.
Fix: If an allocation fails within the profiled process, a message
about this will be presented to the user.
Fix: Further reduced the size of the largest memory blocks allocated
within the profiled process.
This reduces the risk of running out of virtual address space in a 32-bit process
Version 3.5.110, released November 11, 2009
Fix: Installs 3rd party UI libraries in GAC to avoid potential
assembly load problems when running inside Visual Studio.
Version 3.5.107, released November 10, 2009
Fix: Decreased the stack usage by the native stack walker.
Walking the native call stack could cause a stack overflow under certain low stack
Fix: Avoid using possibly incorrect field information when types
are resolved differently in different AppDomains (due to assembly redirection).
Fix: Information about unreachable finalizable instances could
get lost before they were added to the finalization queue.
This could occur when delayed instance cleanup, real-time collection, and heap utilization
Version 3.5.103, released October 29, 2009
Fix: Updated support for .NET 4.0 Beta 2 and Visual Studio 2010
It is currently not possible to attach to or import memory dumps from 64-bit .NET
4.0 processes. We are investigating this issue and will release a maintenance version
as soon as it has been resolved.
Fix: The workaround for the server GC issue in the previous version
introduced an error when counting total instances in the real-time graph.
This occured when real-time data was collected, with heap utilization tracking disabled.
Version 3.5.100, released October 20, 2009
Fix: A workaround for a bug in the .NET Runtime has been implemented.
The bug caused could cause the profiler to lose track of large instances (and all
their held instances), when the server GC was enabled.
Fix: The presentation of arrays of nested types did not include
the name of the declaring type.
Fix: A NullReferenceException could occur after a heap comparison,
if instances were sorted based on analysis issue.
Version 3.5.98, released October 15, 2009
New: Static ValueType fields are identified as roots of boxed ValueType
New: Boxed ValueType instances that are pinned using FixedAddressValueTypeAttribute
are identified by the memory analyser.
Fix: All static fields were not evaluated in some classes (especially
related to Managed C++).
Fix: A race condition could cause an InvalidOperationException
when starting a session or collecting a snapshot.
Fix: Handles exception that occasionally occurs when closing a
The exception caused the profiler to enter a bad state, which required a restart
of the profiler.
Fix: A NullReferenceException was occassionaly thrown during shutdown.
The exception was caused by a race condition in a third party component.
Fix: Status bar animation in Visual Studio was not stopped when
closing a session window.
Fix: Avoids unhandled exception when profiling applications with
corrupt Win32 heaps.
Fix: Changed load order of DLLs when attaching/importing to avoid
old debug libraries being loaded.
System wide hooks could cause old debug libraries to be loaded, but now the debug
libraries are loaded before any hooked DLLs are initialized.
Version 3.5.91, released October 6, 2009
- New: Automatic memory analysis.
New: Full 64-bit support.
Now the unmanaged resources tracker works for 64-bit processes as well.
- New: Full native call stacks.
- New: Call stack reducer.
- New: AppDomain and thread tracker.
- New: Redesigned presentation of methods.
- New: Support for .NET Framework 4.0.
- New: Support for Visual Studio 2010.
New: Hierarchical presentation of types and resources in the Types/Resources
New: Instances, allocation stack, and root path synchronization
in the Type and Resource details views.
Whenever the selection is changed in the Type or Resource details view, the corresponding
instance, allocation stack, or root path will also be selected.
New: Referrers in the Instance details view ("Referenced by") are
presented as a tree.
This makes it easier to browse the hierarchy of referrers and provides an alternative
way of investigating root paths.
New: References in the Instance details view are presented as a
New: References in the Instance details can be filtered to only
include held instances.
Together with the tree presentation of references this makes it easier to browse
the hierarchy of instances held by the selected instance.
Changed: "Size with children" replaced with "Reachable instances",
"Reachable bytes", "Held instances", and "Held bytes".
New: Several new metrics presented for types and type instances.
The new metrics include: "Finalized instances","Delta finalized instances", "New
live bytes" (in the Types/Resources view), "Removed live bytes" (in the Types/Resources
view), "Unreachable bytes",
- Change: Better customization of columns in tables.
Change: All available metrics are no longer included by default
in the tables.
Using the improved column customization, it is possible to select which fields should
be included in the tables.
Fix: The call stacks reducer removed too many functions
The call stacks reducer in .NET Memory Profiler 3.5 Beta (v3.5.70) had an error in
the call stacks reducer, that caused too many functions to be removed when reducing
Version 3.1.343, released May 25, 2009
Fix: Navigating Back and Forward over snapshots could cause an
Fix: Improved support for .NET 3.5 SP1
Static fields in generic types where for instance not identified as roots under .NET
3.5 SP1 and there were some issues related to attach and import.
Fix: Removed a race condition when the runtime performed a GC
Fix: Fixed a problem with averaging of real-time data (Allocs/sec
and Bytes/sec) when too little data was available.
Fix: Improvements related to presentation of instance fields data.
Fix: Debug priveleges not correctly initialized on 64-bit machines,
which could cause problem when profiling services.
Fix: Improved identification of the large object heap when attaching
to a process or importing memory dumps.
Fix: A minor error related to code generation for declarative assertions
have been fixed.
Version 3.1.321, released January 26, 2009
Fix: Fixed a problem with identification of some array types when
attaching to .NET 1.x processes (or importing .NET 1.x memory dumps).
This could cause the attacher to crash and the snapshot collection to fail.
Fix: Registration information entered while running the profiler
under a limited was not available when profiling IIS or other services.
This could cause the profiler to fail to connect to the profiled process.
Fix: Tries to avoid an error that occurs when initializing Visual
Studio integration on some computers.
Change: The number of resource instances presented under the Resource
details view has been limited.
To avoid slow updates, all instances are not included in the resource list if too
many instances exist.
Version 3.1.319, released October 21, 2008
Fix: The development Web server (WebDev.WebServer.exe) is now correctly
located on systems that only have Visual Studio 2008 installed.
Fix: Message about administrative rights is not shown when profiling
ASP.NET, unless they are actually necessary.
Fix: When profiling WPF Browser application under a 64-bit OS,
the 32-bit version of PresentationHost.exe is used.
The 32-bit version is used to avoid the 64-bit version from launching the 32-bit
version, which would prevent the profiler from connecting to the correct process.
Fix: Avoids additional errors if initialization of the profiler
within Visual Studio fails.
Version 3.1.312, released August 21, 2008
Fix: "Attach to" and import memory dump now support .NET Framework
Due to low-level changes in the runtime, attach to and import no longer worked correctly
for .NET 3.5 SP1.
Fix: Static fields evaluation has been improved for .NET Framework
Also due to the low-level changes in the runtime, static fields evaluation didn't
work properly under .NET 3.5 SP1.
Fix: Fixed a problem where an error message was shown when trying
to profile a file-based web from Visual Studio 2008 SP1.
Fix: Static fields evaluation improved under low impact profiling.
Change: The fast-filter is taken into consideration when truncating
the instances list in the Type details view.
Version 3.1.307, released July 15, 2008
Fix: Fixed a problem where the usage /p command line argument could
cause the command line information window to be shown, even if the command line
Fix: Improved identification of Debugging Tools for Windows.
The component identifiers of the debugging tools have changed in the latest release,
causing .NET Memory Profiler to not find the installation folder.
Fix: Corrected a problem with the Browse dialog when selecting
the executable to profile.
Version 3.1.301, released June 3, 2008
Fix: Fixed a problem with ASP.NET profiling using IIS 7.
The profiler failed to fully restart the Web Wide Web Service and could not connect
to the ASP.NET process.
Fix: The total number of undisposed instances could become to high.
An instance could be counted as undisposed when its finalizer ran, even if the instance
was not disposable.
Fix: The resource tracker missed the implicit destruction of an
owned HWND when the owner was destroyed.
Version 3.1.297, released May 19, 2008
Change: The sort order of instances are taken into consideration
when truncating the instance list under the Type details view.
Change: Improved background calculation of "Size (with children)".
The performance of the calculation has been improved, and a progress bar and additional
information is presented in the Type details view.
Change: Improved handling of errors when calculating "Size (with
If an instance references a very big instance graph, the data-structures created
during calculation can become quite big. In a low-memory condition, this could cause
out of memory problems. This is now handled by showing a message in the Type details
view, instead of opening an error window.
Fix: Fixed an OutOfMemoryException that could sometimes occur when
attaching to a process or importing a memory dump.
Change: It is now possible to import memory dump files from a .NET
1.x process, even if .NET 1.x is not installed on the machine importing the memory
Fix: Fixed a problem with code injection when using declarative
Fix: Removed a potential dead-lock that could occur under certain
conditions when the resource tracker was enabled.
Fix: Fixed a problem when showing source on autogenerated files
in Visual Studio.
Fix: Double-clicking the column header in an instance list would
cause the details of the selected instance to be shown.
This caused problems when trying to autosize the column by double-clicking the header
Fix: A race condition that could cause the shortest type root paths
calculation to fail under certain conditions has been fixed.
Fix: Some minor UI-fixes under the Type details and Instance details
Version 3.1.283, released March 19, 2008
Fix: Importing a memory dump or collecting a snapshot from an attached
process could fail with the message "Profiling stopped unexpectedly when collecting
- Fix: Rename snapshot now works in Visual Studio.
Fix: A problem with the Launch project property page has been corrected.
Change: The snapshot dropdown lists are expanded to show the whole
name of the snapshot.
Version 3.1.277, released March 6, 2008
New: It is now possible to specify the virtual path and port when
profiling ASP.NET using the development web server (WebDev.WebServer).
Fix: The virtual path and port settings for filebased web projects
in Visual Studio are now correctly used when profiling the ASP.NET application.
Fix: The profiler now correctly detects when virtual memory associated
with thread stacks is released.
Version 3.1.275, released February 27, 2008
Fix: Fixed a timing error in the dispose tracker that could cause
problems in both the profiler and the profiled process.
Fix: Double-clicking a profiler project in the Explorer now correctly
starts profiling using the project settings.
New: An additional command line option has been added (/resourcetracker,
/rt) that controls whether the unmanaged resources tracker is enabled.
Version 3.1.271, released February 8, 2008
New: Visual Studio style presentation of instance fields
The presentation of fields in the Type instance view now optionally mimics the style
of the watch windows in Visual Studio.
New: Field name presentation in root paths and "Referenced by"
When a a reference to an instance is presented, both the instance number and the
name of the referring field is included. This makes is easier to find out how an
instance is referenced and why it has not been garbage collected.
New: "Size with children" is presented for each instance in the
Type details view
New: Improved memory assertions
TypeSet classes provides
much more flexibility in specifying the types to include in the assertion. They
also provide new assertions like MaxNewInstances, MaxInstances, MaxNewBytes etc.
New: Declarative memory assertions
Attributes can be used to declaratively express the expected memory usage of a method.
- New: Visual Studio 2008 integration
- New: Easiers navigation of types, resources, and instances.
- New: WPF Browser Application profiling
New: GC handle tracking
Information about GC handles are collected and presented. The profiler tracks GC
handles created by the runtime itself, or by using the
class or the
New: The "Shortest root paths" in the Type details view can now
be truncated in the middle
This is useful for instance when the root paths of a linked list is being investigated.
The start and end of the list is identical, but the number of nodes in between varies.
By truncating in the middle, such root paths can be merged.
New: The Native Memory view makes use of information collected
by the unmanaged resources tracker
More detailed information will be presented in the native memory view if the unmanaged
resources tracker is enabled.
Change: Memory dumps created using a mismatching runtime versions
can be imported
It is now possible to import a memory dump even if the runtime on the machine where
the memory dump was created does not match the runtime on the machine running .NET
Change: Type root paths retrieval and other potentially long running
calculations are performed in the background
Fix: Publishing ClickOnce projects to a filepath didn't work correctly
if .NET Memory Profiler was running within Visual Studio
Fix: The dispose tracker didn't correctly detect calls to Dispose
if the Dispose methods was a member of a generic class or a boxed valuetype.
Version 3.0.142, released November 22, 2007
Fix: Fixed a problem with attaching to a process and importing
memory dumps on .NET Framework 3.5
Fix: Fixed a problem that could cause static field identification
to fail when running under .NET Framework 3.5
The problem is caused by an error in the .NET Runtime. When profiling WPF Browser
applications on 64-bit systems, it could also cause the profiled application to
terminate unexpectedly when identifying static fields.
Version 3.0.141, released August 17, 2007
Fix: Fixed an error that could cause an
or ArgumentException when using the Real-time view.
Fix: An IndexOutOfRangeException
could be thrown when using the Native memory view on a process that used zero physical
Shows a normal error message instead of the unhandled exception dialog when the
profiler fails to copy data to the clipboard.
If the Type of an instance cannot be retrieved when collecting a heap snapshot,
it will be presented as <Unknown>.
Fix: An error in the algorithm used for tracking a instances could
cause an exception while collecting a heap snapshot.
The exception only occurred when at least two snapshots were collected with more
than 4 million instances reported.
Fix: Avoids an InvalidOperationException
that could occur after a heap snapshot collection has failed.
Fixed a problem that prevented snapshots from an active session to be compared with
The Save Snapshot command was not enabled in Visual Studio, even if the snapshots
were not automatically saved.
Some minor UI fixes.
Version 3.0.122, released June 13, 2007
Fix: The top caption of the heap utilization columns was not correctly
updated between "Allocs" and "Allocs/sec"
Now the caption is "Allocs/sec" when the "Show Allocs and
Bytes per Second" option is enabled and the "Show Heap Utilization as
Percent" option is not active.
The details list of a method (under the Call Stacks/Methods page) could present
incorrect numbers for unmanaged resources.
Fix: When the real-time data of more than 1000 types had changed
during two delta reports (one second), there was a risk that an InvalidCastException
The info panel for the Type/Resource details page didn't correctly use the "Show
Allocs and Bytes per Second" setting.
Version 3.0.119, released June 5, 2007
New: It is now possible to provide interfaces to the MemAssertion
If the Type of an interface is supplied to NoNewInstances, NoNewInstancesExcept etc.
then all types implementing the Type will be included in the assertion.
Change: GC.SuppressFinalize is no longer used to indicate a disposed
In previous versions of .NET Memory Profiler, a call to GC.SuppressFinalize was used
to detect whether the instance was disposed. Unfortunately this lead to instances
being falsely identified as disposed, so this functionality has now been removed.
Fix: When low impact profiling was enabled, the profiled process
could crash when instances of certain classes were allocated.
The crash was caused by an invalid class identifier being returned by the runtime
for some classes. A workaround for this problem has now been implemented.
If a single type was provided to NoNewInstancesExcept( Type, ... ), the assertion
behaved like the NoNewInstances assertion
Fix: The "Start UI" option didn't work correctly when
the memory assertion dialog was shown in non-interactive mode.
The user interface was only started if the memory leak was handled automatically
(e.g. no dialog was shown).
Version 3.0.114, released May 15, 2007
Version 3.0.113, released May 4, 2007
Version 3.0.108, released April 27, 2007
If an unsaved project is unloaded from the Projects Explorer, a Save Project prompt
will be shown.
In rare cases a timing issue could cause the profiler to hang when identifying root
referees under .NET 1.1.
Fix: A DirectoryNotFoundException
could be thrown if "View->Reset Layout" was clicked before any modified
layouts had been saved.
Fix: An InvalidOperationException
could be thrown if a new snapshot was collected immediately after another snapshot
Fix: The resource tracker could cause unexpected behavior in the
profiled process if multiple versions of the same DLL were loaded side-by-side.
This is temporarily fixed so that only resource instances created by the firstly
loaded DLL are tracked. Future releases will make sure that all instances are correctly
Version 3.0.103, released April 17, 2007
New: The command line argument "/sprj" has been added.
This argument is used to indicate whether the project that was used to start a new
session in non-interactive mode should be saved if a new session file is added to
If the profiler terminates unexpectedly while profiling, a dialog will be shown
at the next startup, allowing the user to save any unsaved profiler sessions.
The progress dialog is shown when saving session files
Fixed a threading issue that could cause problems when saving sessions while still
A memory leak could occur under certain circumstances, especially when running the
profiler under Visual Studio.
The type call stacks were not correctly updated when the compared snapshots changed,
without changing the selected type.
Fix: The Start Memory Profiler command didn't work on ASP.NET projects
in Visual Studio.NET 2003.
A message stating that ASP.NET was already being profiled was shown, and profiling
could not be started.
Fix: The Start Memory Profiler command was not initially shown
in the context menu in the solution explorer in Visual Studio
Visual Studio delay loads packages, and the context menu command was not added until
the profiler package was actually loaded.
Session file settings and memory leak settings were not correctly updated when using
session or project property pages in Visual Studio.
Version 3.0.97, released April 3, 2007
Fix: The resource tracker could cause a dead-lock in the profiled
process under certain circumstances.
This problem appeared under high-stress conditions when a lot of GCs were taking
place, and it has now been resolved.
Generic classes were not were not unloaded correctly when a application domain was
unloaded, which could cause problems when collecting heap snapshots.
When attaching to a process, or importing a memory dump file, that has several versions
if the same assembly loaded could cause the snapshot collection to fail.
Fix: A NullReferenceException could occur when auto-collecting
The exception occurred if older snapshots were being investigated when the auto-collected
snapshot was initiated.
Fix: A StackOverflowException
could occur when viewing the details of an instance that was part of a very large
Fix: When making memory assertions using the .NET Memory Profiler
API, the Types were not correctly identified if the module name was not the same
as the assembly name.
This could for example happen when the assertion was made on a COM wrapper class.
Slightly improved performance when attaching to a process or importing memory dump
Version 3.0.89, released March 6, 2007
Fix: A race condition could occur when a GC was performed while
a thread was being destroyed.
The race condition only occurred when the resource tracker was enabled, and could
cause the profiled process to terminate unexpectedly.
Fix: The performance of the stack-tracer was significantly reduced
due to an optimization that was never used.
This has now been corrected and the performance of the profiler should be the same
as the previous version.
Fixed a bug that could cause the profiled process to crash if many threads were
Fix: The maximum number of software triggered snapshots didn't
affect the automatic collection of snapshots.
Now no automatic snapshots will be collected if the maximum number of software triggered
snapshots has been reached.
Fix: Selecting the instance drop down list could cause a NullReferenceException
if the previously selected instance did not exist in a new snapshot.
Fix: A NullReferenceException
was sometimes thrown when attaching to a process or importing a memory dump files,
after having added Type plots in the real-time view.
Version 3.0.86, released February 27, 2007
The full path of projects and session files are shown as tool-tips in the Profiler
When saving a project under a new name (Save Project As), the current project name
is provided as a default name
Instance data size is correctly initialized for snapshots that have not been saved
When running non-interactively the saved session file was not always correctly flushed
Some additional minor changes in logging
Version 3.0.83, released February 22, 2007
Version 3.0.78, released February 16, 2007
New! Unmanaged resource tracker
Collects and presents information about unmanaged resources allocations.
New! Attach to process
Allows the profiler to attach to an already running .NET process.
New! Import memory dump files
Allows memory information from a memory dump file to be imported as a heap snapshot.
New! Profiler projects
Allows you to define session settings in a project, and to keep track of session
files related to a session.
New! 64-bit support
Support for 64-bit .NET processes and 64-bit OS.
Documentation is included in the MSDN help collection
Automatically collect snapshots at defined intervals.
New! Use wildcards when performing memory assertions
Wildcards make it possible to assert on a namespace rather than a specific type.
Change: No prompt for terminating the process or restarting services
The profiled process will always be terminated when profiling is stopped.
Change: Session files can be automatically saved or discarded even
when running interactively
This gives the possibility to avoid the "Save session" prompt.
Improved UI in the snapshots view
Improved filtering for tabular data