.NET Memory Profiler Changelog

What's new in .NET Memory Profiler 5.7.28

Feb 10, 2023
  • Fix: Fix an error that could occur when opening menus in Windows 11 and some Windows 10 versions.
  • This was caused by an issue in the DevExpress library, that has now been updated
  • New: Support for Visual Studio 2022 17.4 integration.
  • New: Support for .NET 7.0.
  • New: Support for Windows 11

New in .NET Memory Profiler 5.7.26 (Jan 3, 2022)

  • Fix: Fix error that could occur when detecting Visual Studio in the installer.

New in .NET Memory Profiler 5.7.25 (Dec 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 protected] and we will consider re-adding Visual Studio 2015 integration if there is a demand.

New in .NET Memory Profiler 5.7.21 (Jun 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.

New in .NET Memory Profiler 5.7.20 (Feb 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".

New in .NET Memory Profiler 5.7.19 (Feb 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.

New in .NET Memory Profiler 5.7.17 (Jan 12, 2021)

  • Fix: Presenting available software updates could cause exception in v5.7.

New in .NET Memory Profiler 5.7.16 (Jan 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.

New in .NET Memory Profiler 5.7.15 (Dec 28, 2020)

  • Fix: Failed to start ASP.NET Core 2.x profiling under Visual Studio 2017.

New in .NET Memory Profiler 5.7.13 (Dec 11, 2020)

  • New: Improved support for .NET Core 3.x and .NET 5.0
  • New: New implementation of debug profiling
  • New: New implementation of unit test profiling
  • New: Unit test data collector for VSTest
  • New: Better support for Visual Studio 2019 and the latest Visual Studio previews
  • New: Hybrid inspection snapshots
  • New: Identification of delegate target Method
  • New: WPF cleanup support in .NET Core 3.x and .NET 5.0
  • New: Identification of instances in the pinned heap

New in .NET Memory Profiler 5.6.53 (Mar 27, 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: Ading "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.

New in .NET Memory Profiler 5.6.52 (Mar 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: Ading "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.

New in .NET Memory Profiler 5.6.46 (Sep 4, 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.

New in .NET Memory Profiler 5.6.44 (Aug 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.

New in .NET Memory Profiler 5.6.40 (Jul 21, 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.

New in .NET Memory Profiler 5.6.34 (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

New in .NET Memory Profiler 5.6.33 (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.

New in .NET Memory Profiler 5.6.30 (Apr 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".

New in .NET Memory Profiler 5.6.27 (Mar 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.

New in .NET Memory Profiler 5.6.24 (Mar 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.

New in .NET Memory Profiler 5.6.23.0 (Feb 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

New in .NET Memory Profiler 5.6.19.0 Beta (Feb 14, 2018)

  • Presentation of field values in the type instances list
  • Improved filtering and presentation of type instances
  • Run tests using the DevExpress CodeRush testrunner
  • Decompile methods in call stacks (using DevExpress CodeRush)
  • Select roots to include/exclude in the instance graphs
  • Better navigation of types, resources, filtes, and instances
  • Visual Studio integration as external process
  • Themes

New in .NET Memory Profiler 5.5.71.0 (Jan 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.

New in .NET Memory Profiler 5.5.66.0 (Oct 31, 2017)

  • Fix: The profiler process could crash with an ExecutionEngineException if AppDomains have been unloaded.
  • A workaround for a bug in .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.

New in .NET Memory Profiler 5.5.64.0 (Sep 28, 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"

New in .NET Memory Profiler 5.5.55.0 (Aug 22, 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.

New in .NET Memory Profiler 5.5.54.0 (Jul 11, 2017)

  • Fix:
  • Visual Studio integration could fail during installation if only Visual Studio 2012 or 2013 was installed on the machine.
  • When profiling a 32-bit F# application, the profiled process could crash due to incorrect tracking of tail-call functions.
  • Improved speed and stability when importing 32-bit memory dumps.

New in .NET Memory Profiler 5.5.50 (Jun 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.

New in .NET Memory Profiler 5.5.46 (Jun 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.

New in .NET Memory Profiler 5.5.37 (May 11, 2017)

  • New: Redesigned real-time presentation
  • New: Compare real-time data between sessions
  • New: Collect performance counter data
  • New: Significantly improved call stacks collection and presentation
  • New: Improved "inspection-only" attach to process and memory dump import
  • New: New profiler API functionality to retrieve memory usage from within the profiled process
  • New: NuGet packages for the profiler API and NmpCore
  • The .NET Memory Profiler API and the NmpCore tool are available as NuGet packages.
  • New: Snapshot filters
  • It is now possible to click "Use as snapshot filter" in the filter view. This will use the currently selected filter as a filter for the snapshots comparison.
  • New: Additional analysis issues
  • New: Improved clean-up of lingering instances when collecting a snapshot in a WPF process
  • New: Support for Universal Windows Apps and .NET Core
  • New: Support for Visual Studio 2017
  • New: Unit tests added as a profiling type.
  • This is mainly intended to be used when automatically profiling unit tests using SciTech.NmpCore.Task.
  • New: "Delegate instances" and "Event handler instances" filters added.
  • New: Expand to root implemented in the "Referenced by" view under instance details.
  • An "Expand to root" menu item has been available previously, but it was not implemented.
  • New: Instance graph navigator
  • When more than one origin node exists in the combined instances graph (under Type/Filter details), a navigator becomes available in the graph toolbar.

New in .NET Memory Profiler 5.5.36 (May 10, 2017)

  • New: Redesigned real-time presentation
  • New: Compare real-time data between sessions
  • New: Collect performance counter data
  • New: Significantly improved call stacks collection and presentation
  • New: Improved "inspection-only" attach to process and memory dump import
  • New: New profiler API functionality to retrieve memory usage from within the profiled process
  • New: NuGet packages for the profiler API and NmpCore
  • The .NET Memory Profiler API and the NmpCore tool are available as NuGet packages.
  • New: Snapshot filters
  • It is now possible to click "Use as snapshot filter" in the filter view. This will use the currently selected filter as a filter for the snapshots comparison.
  • New: Additional analysis issues
  • New: Improved clean-up of lingering instances when collecting a snapshot in a WPF process
  • New: Support for Universal Windows Apps and .NET Core
  • New: Support for Visual Studio 2017
  • New: Unit tests added as a profiling type.
  • This is mainly intended to be used when automatically profiling unit tests using SciTech.NmpCore.Task.
  • New: "Delegate instances" and "Event handler instances" filters added.
  • New: Expand to root implemented in the "Referenced by" view under instance details.
  • An "Expand to root" menu item has been available previously, but it was not implemented.
  • New: Instance graph navigator
  • When more than one origin node exists in the combined instances graph (under Type/Filter details), a navigator

New in .NET Memory Profiler 5.0.156 (Apr 6, 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.

New in .NET Memory Profiler 5.0.153 (Jan 21, 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.

New in .NET Memory Profiler 5.0.152 (Jan 21, 2017)

  • 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.

New in .NET Memory Profiler 5.0.144 (Sep 17, 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.

New in .NET Memory Profiler 5.0.142 (Apr 28, 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.

New in .NET Memory Profiler 5.0.133 (Feb 12, 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.

New in .NET Memory Profiler 5.0.128 (Dec 15, 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 .
  • 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.

New in .NET Memory Profiler 5.0.125 (Dec 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 runime.
  • Fix: Fixed a VerificationException that could occur when the dispose tracker is enabled when profiling Silverlight applications and other low-trust applications.

New in .NET Memory Profiler 5.0.122 (Nov 4, 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.

New in .NET Memory Profiler 5.0.117 (Oct 9, 2015)

  • Change: Default layout of a snapshot from an attached process now presents New/Remove 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.

New in .NET Memory Profiler 5.0.114 (Sep 25, 2015)

  • 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.

New in .NET Memory Profiler 5.0.112 (Sep 25, 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.

New in .NET Memory Profiler 5.0.107 (Jul 22, 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 [email protected].
  • 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.

New in .NET Memory Profiler 5.0.98.0 (Jun 25, 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.

New in .NET Memory Profiler 5.0.80.0 (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.

New in .NET Memory Profiler 5.0.78.0 (Apr 29, 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.

New in .NET Memory Profiler 5.0.74.0 (Apr 20, 2015)

  • New WPF based user interface
  • Easily run unit tests under the profiler using the Visual Studio test runner
  • Remote profiling
  • Profile multiple processes within the same session
  • Support for Azure compute emulator projects in Visual Studio
  • Support for Visual Studio 2015 and .NET Framework 4.6
  • Support for snapshots that are larger than 4 GB

New in .NET Memory Profiler 4.6.86 (Sep 10, 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.

New in .NET Memory Profiler 4.6.77 (May 15, 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.

New in .NET Memory Profiler 4.6.71 (May 5, 2014)

  • Fix: Static fields not always correctly reported when importing a memory dump or attach using Debugging Tools. This could cause an unhandled exception in the profiler.

New in .NET Memory Profiler 4.6.69 (Feb 26, 2014)

  • Fix: Static enum fields not based on int or uint were incorrectly reported, and could cause the profililing session to stop.

New in .NET Memory Profiler 4.6.68 (Feb 12, 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.

New in .NET Memory Profiler 4.6.66 (Dec 17, 2013)

  • New: Added command line arguments to start Silverlight profiling from the command line (including NmpCore)
  • The new commands are /slx "" and /slu "". 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.

New in .NET Memory Profiler 4.6.63 (Dec 13, 2013)

  • Fix: The predefined list of ignored framework issues failed to load, causing too many issues to be presented.

New in .NET Memory Profiler 4.6.59 (Oct 24, 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.

New in .NET Memory Profiler 4.6.58 (Oct 12, 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.

New in .NET Memory Profiler 4.6.52 (Sep 16, 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.

New in .NET Memory Profiler 4.6.48 (Aug 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.

New in .NET Memory Profiler 4.6.40 (Jun 21, 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 added 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 Debuggin 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.

New in .NET Memory Profiler 4.6.29 (May 30, 2013)

  • Fix: If a process contained static char fields with non-ASCII characters, the second snapshot could fail.

New in .NET Memory Profiler 4.6.26 (May 9, 2013)

  • Fix: An exception could occur when renaming snapshots while saving a session

New in .NET Memory Profiler 4.6.24 (May 7, 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

New in .NET Memory Profiler 4.5.215 (Apr 24, 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 for .NET runtime 2.0 was disabled and has now been re-enabled.

New in .NET Memory Profiler 4.5.213 (Apr 6, 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.

New in .NET Memory Profiler 4.5.211 (Feb 21, 2013)

  • 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.

New in .NET Memory Profiler 4.5.208 (Feb 20, 2013)

  • 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.

New in .NET Memory Profiler 4.5.207 (Feb 19, 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.

New in .NET Memory Profiler 4.5.204 (Feb 13, 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).

New in .NET Memory Profiler 4.5.194 (Jan 19, 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.

New in .NET Memory Profiler 4.5.191 (Dec 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.

New in .NET Memory Profiler 4.5.189 (Nov 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.

New in .NET Memory Profiler 4.5.186 (Oct 29, 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.

New in .NET Memory Profiler 4.5.184 (Sep 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.

New in .NET Memory Profiler 4.5.179 (Aug 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.

New in .NET Memory Profiler 4.5.176 (Aug 13, 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 paramaters (i.e. using the /da argument).

New in .NET Memory Profiler 4.5.173 (Jul 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 where 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.

New in .NET Memory Profiler 4.5.163 (Jun 26, 2012)

  • Fix: An ArgumentException could very occassionally occur when updating the status bar in Visual Studio

New in .NET Memory Profiler 4.5.154 (Jun 8, 2012)

  • Fix: A missing implementation of a Visual Studio debug interface could cause debug profiling to fail.

New in .NET Memory Profiler 4.5.153 (Jun 8, 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.

New in .NET Memory Profiler 4.0.133 (Jun 8, 2012)

  • Change: Instance data collection rules were not saved correctly when editing session settings.

New in .NET Memory Profiler 4.0.131 (Jun 8, 2012)

  • Change: Added support for Debugging Tools included in the Windows 8 SDK.
  • 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.

New in .NET Memory Profiler 4.0.125 (Jun 8, 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).

New in .NET Memory Profiler 4.0.124 (Jun 8, 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.

New in .NET Memory Profiler 4.0.119 (Jun 8, 2012)

  • New: The resource tracker now correctly tracks handles created by CreateProcess and CreatePipe.
  • 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.

New in .NET Memory Profiler 4.0.118 (Jun 8, 2012)

  • 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.