Home
Download
Buy
Support

.NET Memory Profiler Release Notes

Below is a summary of additions and changes to .NET Memory Profiler:

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 snapshot 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 valus 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 memory.
    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 sessions.

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 shown.
    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 memory conditions.
  • 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 was disabled.

Version 3.5.103, released October 29, 2009

  • Fix: Updated support for .NET 4.0 Beta 2 and Visual Studio 2010 Beta 2.
    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 fields.
  • 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 session file.
    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 view.
  • 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 tree.
  • 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 the stacks.

Version 3.1.343, released May 25, 2009

  • Fix: Navigating Back and Forward over snapshots could cause an exception.
  • 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 3.5 SP1.
    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 3.5 SP1
    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 was correct.
  • 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 children)".
    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 dump."
  • Fix: Fixed a problem with code injection when using declarative assertions.
  • 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 border
  • 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 page.

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 snapshot".
  • 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
    The new AssertionsDefinition and 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 WeakReference class or the GCHandle struct.
  • 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 Memory Profiler.
  • 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 InvalidCastException 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 memory pages.

  • Fix: Shows a normal error message instead of the unhandled exception dialog when the profiler fails to copy data to the clipboard.

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

  • Fix: Fixed a problem that prevented snapshots from an active session to be compared with other snapshots.

  • Fix: The Save Snapshot command was not enabled in Visual Studio, even if the snapshots were not automatically saved.

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

  • Fix: 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 was thrown.

  • Fix: 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 methods.
    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 instance.
    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.

  • Fix: 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

  • Fix: An error that could cause the profiler to crash under Windows 2000 has been corrected.
    The error was caused by an access violation in unmanaged code. It could theoretically also occur under another OS than Windows 2000, but the problem has only been seen on Windows 2000.

Version 3.0.113, released May 4, 2007

  • Fix: The dispose tracker has been modified to fix a problem with profiling a WPF application under 64-bit Vista.

Version 3.0.108, released April 27, 2007

  • Change: If an unsaved project is unloaded from the Projects Explorer, a Save Project prompt will be shown.

  • Fix: 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 tracked.

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

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

  • Change: The progress dialog is shown when saving session files

  • Fix: Fixed a threading issue that could cause problems when saving sessions while still profiling.

  • Fix: A memory leak could occur under certain circumstances, especially when running the profiler under Visual Studio.

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

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

  • Fix: Generic classes were not were not unloaded correctly when a application domain was unloaded, which could cause problems when collecting heap snapshots.

  • Fix: 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 heap snapshots.
    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 instance graph.

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

  • Fix: Slightly improved performance when attaching to a process or importing memory dump files.

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.

  • Fix: Fixed a bug that could cause the profiled process to crash if many threads were created.

  • 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

  • New: The full path of projects and session files are shown as tool-tips in the Profiler Projects Explorer

  • Change: When saving a project under a new name (Save Project As), the current project name is provided as a default name

  • Fix: Instance data size is correctly initialized for snapshots that have not been saved

  • Fix: When running non-interactively the saved session file was not always correctly flushed

  • Change: Some additional minor changes in logging

Version 3.0.83, released February 22, 2007

  • Change: Minor changes in error reporting and logging

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.

  • New! Documentation is included in the MSDN help collection

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

  • Change: Improved UI in the snapshots view

  • Change: Improved filtering for tabular data

Version 2.6.97, released October 1, 2006

  • Fix: Profiling a project within Visual Studio now correctly initialize the executable path, even when the output path is rooted and not relative to the project location.

  • Change: Avoids adding too many instance in the class details view.
    If a class has too many instances, the instance list will be truncated with an entry named "[List truncated, too many instances]".

  • Change: Significantly reduced the size of the largest contiguous memory blocks allocated.
    This will allow the profiler to work better in scenarios where the profiler or the profiled process is running out of virtual memory space, e.g. when the process is using (or has reserved) close to 2 GB of memory.

Version 2.6.92, released August 23, 2006

  • Fix: Collecting instance field data failed under certain circumstances. This failure could then cause a IndexOutBoundsException when instance details were presented.

Version 2.6.89, released July 8, 2006

  • Fix: Disposable instances that were disposed by a explicit call to IDisposable.Dispose were not correctly identified as disposed.

Version 2.6.88, released June 30, 2006

  • Fix: Unreachable instances were included in the live instance count in some places when heap utilization tracking was enabled.

  • Fix: Some instance allocations were incorrectly identified as gen #1 allocations instead of gen #2 allocations when showing a loaded snapshot collected using a gen #0 GC.

Version 2.6.85, released April 11, 2006

  • Fix: Fixed a problem with an IndexOutOfRangeException that was sometimes thrown when working with the real-time graph.

  • Fix: The workaround for a bug with root identification under .NET Framework 2.0 has been improved.

Version 2.6.82, released March 16, 2006

  • Fix: Assertions that used a full snapshot (collected using MemProfiler.FullSnapShot) as comparison, didn't work properly.

  • Fix: The MemAssertion.NoInstances methods that accepted a Type[] array and an includeSubclasses argument, did not correctly include subclasses in the assertion.

Version 2.6.80, released March 2, 2006

  • Fix: When loading session files with a large number of instances a NullReferenceException or AccessViolationException could sometimes be thrown.

Version 2.6.77, released January 30, 2006

  • Fix: Fixed a bug introduced due to redesign in v2.6.74. This bug caused disposable classes to not be correctly shown in the classes list when the "Dispose Info" view was selected.

Version 2.6.76, released January 26, 2006

  • Fix: A NullReferenceException could sometimes be thrown when selecting a snapshot from a saved session file.

Version 2.6.74, released January 15, 2006

  • Change: Classes that are loaded into several application domains are only presented as a single class.
    Previously the profiler would present separate class entries (with identical names) for each time the class was loaded in an AppDomain.

  • Fix: An error which could cause a NullReferenceException or an AccessViolationException to be thrown when collecting, saving or loading snapshots has been fixed.

  • Fix: Instance fields data of classes that were loaded after the first snapshot were not always collected properly.

  • Fix: Instance fields data of classes that contained ValueTypes that were loaded into several AppDomains were not always collected properly.

Version 2.6.66, released December 14, 2005

  • Fix: Correctly handles generic type parameters that references the class being initialized. Previously this could cause the profiler to enter an infinite recursion.

  • Fix: A NullReferenceException or an AccessViolationException was sometimes thrown by the instance tracker, when an instance had a lot of references (> 256,000).

  • Fix: To avoid a bug in the runtime, root referees are not evaluated when an application domain has been unloaded in a .NET 1.x process.

Version 2.6.64, released November 30, 2005

  • Fix: Improved retrieval of process handles, to avoid an exception when profiling services.

  • Fix: It is now possible to profile a service that takes more than 60 seconds to start.

  • Fix: CoInitializeEx is no longer called from a runtime thread, to avoid problems with ApartmentState being initialized to early.

  • Fix: Updated menu and toolbar component, which hopefully will avoid an unhandled ExternalException.

Version 2.6.61, released November 7, 2005

  • Fix: Reading snapshots from a session file could sometimes cause a NullReferenceException.

Version 2.6.60, released November 4, 2005

  • Fix: Update of a workaround for a bug in .NET Framework 2.0 which causes an access violation when static fields are evaluated
    The workaround no longer works for pre-RTM releases of .NET Framework 2.0. When profiling a process running under RC1 or a CTP, root referee identification must be disabled.

  • Fix: ThreadStatic fields are no longer evaluated
    Due to a bug in .NET Framework 2.0, ThreadStatic fields cannot be evaluated. We will try to find a workaround.

  • Fix: Fixed a problem with a call to the GetProcessImageFileName function, which does not exist in Windows 2000

  • Fix: An unhandled Win32Exception sometimes occurred when starting ASP.NET or service profiling.

Version 2.6.57, released October 26, 2005

  • Fix: Environment variables are now more correctly initialized when profiling ASP.NET and services.

Version 2.6.53, released October 23, 2005

  • New! Full support for .NET Framework 2.0
    The profiler currently supports .NET Framework 2.0 beta 2 and .NET Framework 2.0 RC1. Some limitations exist when running under beta 2, e.g. no roots referrers are identified.

  • New! Visual Studio 2005 integration

  • New! .NET Memory Profiler API memory assertions works with generic classes

  • Change: Memory usage significantly reduced for instance information in the profiler.

  • Change: Native memory profiling replaced with "Low impact profiling"
    Low impact profiling is similar to native profiling, but when collecting snapshots, a garbage collection is performed, allowing managed instances to be presented more accurately.

  • Change: The "Referenced by" and "References" list under Instance details now only present each instance once, even if they reference/are referenced multiple times.

  • Change: Special folder paths are no longer retrieved using Environment.GetFolderPath, since it could cause an exception in some cases.

  • Change: It is now possible to select how to sort "References" and "References by" under Instance details

  • Change: If "Only show instances included in root paths" is selected and only identified roots are used when looking up root paths, then <root> entries will not be shown in the "Referenced by" list.

  • Fix: Using the "Start Memory Profiler" command in Visual Studio failed when the startup project was a subproject under an Enterprise template.

  • Fix: When closing the profiler while profiling ASP.NET or a service, restarting the services could fail.

  • Fix: The number of root references presented in the real-time view was incorrect for one GC during snapshot collection.

  • Fix: Adding a realtime comment using the profiler API when real-time data was not collected could cause a NullReferenceException.

  • Fix: .NET Memory Profiler Commands were not correctly enabled when opening a session file within Visual Studio

  • Fix: Snapshots are now correctly renamed in the saved session file.

  • Fix: The count of Call stacks didn't show if more than 100,000 call stacks existed.

  • Fix: An unhandled IndexOutOfRangeException sometimes occured while viewing the real-time plot.

  • Fix: A scaling error which occured within Visual Studio when running under a high-resolution setting has been fixed.

  • Fix: Scrolling in the real-time grid could sometimes cause an ArgumentException.

  • Fix: Using up- and down arrows in the fast class filters could cause an unhandled ArgumentOutOfRangeException.

Version 2.5.33, released July 18, 2005

  • Fix: The RootIdTrigger.dll file is no longer located based on the location of NetMemProfilerBase.dll.
    This should avoid the problem with the "Waiting for process to start" message never disappearing.
  • Fix: The command line arguments /sfl, /sf and /sp are now correctly implemented.
     

Version 2.5.31, released April 16, 2005

  • Fix: It is now possible to profile applications running under the Feb CTP build of .NET Framework 2.0

  • Fix: The dispose tracker can now be used when running .NET Framework 2.0.

  • Fix: The instance dropdown list under the Instance details page was not always correctly updated.

Version 2.5.30, released March 31, 2005

  • Fix: An InvalidOperationException was sometimes thrown when working with session files without any snapshots.

  • Fix: When updating toolbar commands an unhandled NullReferenceException might get thrown under certain conditions.

Version 2.5.29, released March 28, 2005

  • Fix: The dispose tracker caused an InvalidProgramException to be thrown for some Dispose and Finalize methods.

  • Fix: A NullReferenceException was sometimes thrown when viewing an instance whose references changed between snapshots.

  • Fix: A NullReferenceException was thrown after collecting a heap snapshot when both heap utilization tracking and native memory profiling were enabled. It is no longer possible to enable heap utilization tracking together with native memory profiling.

  • Fix: Using the .NET Memory Profiler API together with native memory profiling might cause a NullReferenceException to be thrown. It is no longer possible to use the .NET Memory Profiler API together with native memory profiling (MemProfiler.IsProfiling will return false).

Version 2.5.28, released March 11, 2005

  • Fix: A NullReferenceException was sometimes thrown when viewing an instance that got garbage collected between snapshots.

Version 2.5.27, released March 9, 2005

  • Change: It is no longer necessary to run ASP.NET and services under an administrative account when profiling.

  • Change: When viewing the class details of classes with a large amount of instances the UI is now much more responsive.

  • Fix: Accessing the profiler API when not profiling sometimes threw an exception.

  • Fix: The options pages in Visual Studio.NET were shown incorrectly when using a high DPI setting.

Version 2.5.26, released Jan 18, 2005

  • Fix: Installing the beta ended the evaluation period of .NET Memory Profler 2.0 prematurely.

  • New: An optional message is shown when selecting ASP.NET profiling. The message informs the user that privileges has to be checked before profiling ASP.NET.

Version 2.5.25, released Jan 12, 2005

  • New! .NET Memory Profiler API
    The .NET Memory Profiler API can be used to automatically detect memory leaks and control the profiler from within the profiled process.

  • New! Heap utilization tracking

  • New! Visual Studio.NET integration

  • New! Show source code
    When running under Visual Studio.NET, the source code of methods can be shown in an editor window.

  • New! Command line support

  • New! Support for .NET Framework 2.0

  • New! Shortest root paths of all instances are presented in Class details.

  • New! Automatically save snapshots

  • New! Run profiler in non-interactive mode.
    Non-interactive mode can be used when using .NET Memory Profiler during automated testing of software. Snapshots can automatically be collected and the session file can be automatically saved at the end of a session.

  • New! Select snapshots to include when saving session file.

  • New! Full information about selected items is presented in info panels.

  • New! Instances that are not part of a root path can be filtered out from "Referenced by" list

  • New! WeakReference targets are included in "References" and "Referenced by" lists under Instance details

  • New! It is now possible to run unit test programs under the profiler.
    Previous version had problems running some unit testing frameworks (like NUnit).

  • New! Fast method filter.
    Allows methods to be filtered based on namespace, class name and method name.

  • New! Context menus
    Context menus are available for most controls in the profiler.

  • New! Copy to clipboard
    Data from tables, info panels etc. can now be copied to the clipboard.

  • New! Recent session files and recent profiled applications

  • Fix: Presentation of instance fields did not always work correctly.

  • Change: Sorting and filtering of call stacks and root paths works differently

Version 2.0.21.0, released Feb 9, 2005

  • Fix: The message about restarting IIS services was wrongly shown when profiling an application or a service.

  • Fix: A problem with starting profiling of services has been fixed.

Version 2.0.20.0, released Jan 18, 2005

  • New: An optional message is shown when selecting ASP.NET profiling. The message informs the user that privileges has to be checked before profiling ASP.NET.

  • New: An optional warning is shown before the IIS services are restarted when profiling ASP.NET.

Version 2.0.19.0, released Jun 10, 2004

  • Fix: A TypeLoadException could occur under certain circumstances when starting the profiler. This was caused by the obfuscation and has now been fixed.

  • Fix: Synchronization for the profiler call backs has been modified.

Version 2.0.18.0, released Jun 3, 2004

  • Fix: Instances of disposable classes whose finalizer gets called were always regarded as undisposed even if Dispose was called previously. This only happened for classes in which GC.SuppressFinalize is never called.

  • Fix: Unloading modules could cause instability in the profiled process, this has now been fixed.

Version 2.0.17.0, released May 26, 2004

  • Fix: Instances with unknown references could cause the connection with the profiled process to be lost.

  • Fix: Processes with more than 100 Win32 heaps would cause the profiled process to crash.

Version 2.0.16.0, released Apr 29, 2004

  • Fix: A bug which could cause the profiler to consume memory in an infinite loop when identifying native memory has been fixed.

  • Fix: Instance field data was not always correctly presented for certain classes. This has now been fixed.

Version 2.0.15.0, released Mar 4, 2004

  • Fix: Name of the snapshot was not correctly updated when a snapshot was saved.

  • Fix: If performance counters were disabled the profiled process would crash when a snapshot was collected.
    The crash has been fixed, but native memory information for other processes is not presented if performance counters are disabled. .NET Memory Profiler uses the Process class to retrieve processes running on the computer, and the Process class needs the performance counters.

  • Change: Performance of the call stack tracer has been improved.

Version 2.0.14.0, released Feb 16, 2004

  • Fix: An error message was sometimes shown after profiling was ended. This message has been removed.

  • Fix: When using delayed instance cleanup, severe performance degradation could occur for some processes, after collecting a heap snapshot. This issue has been resolved.

Version 2.0.13.0, released Feb 13, 2004

  • Fix: A problem with viewing the native memory for certain unmanaged processes has been fixed.

Version 2.0.12.0, released Feb 11, 2004

  • New! Dispose tracker
    Tracks information about disposable instances.

  • New! Instance data collection.
    Allows field values to be shown.

  • New! Real-time view.

  • New! Fast class filter.
    Allows classes to be filtered based on namespace and class name.

  • New! Native memory profiling.
    Presents more accurate native memory information for the profiled process.

  • New! Size with children is presented in Instance Details

  • New! Memory for JITted methods are identified in the native memory view.

  • New! Inlining can optionally be enabled.

  • Fix: Is it now possible to profile processes using the server runtime (mscorsvr) on multiprocessor machines.

  • Fix: Identification of the large object heap works correctly under .NET Framework 1.1.

  • Fix: Appearance of profiler is now correct when running on high-resolution monitors.

  • Change: The selected class in the Classes view is remembered when changing filters and collecting snapshots.

  • Change: Memory usage in the profiler significantly reduced.

Version 1.0.9.0, released Jan 16, 2003

  • Fix: Showing the current or previous snapshot, after showing a saved snapshot, could cause a NullReferenceException.

Version 1.0.8.0, released Dec 17, 2002

  • Fix: A timing problem with garbage collection, which could cause the profiled process to crash, has been fixed.
  • Change: Registered user is presented in the About form.

Version 1.0.5.0, released Nov 20, 2002

  • New! Profile ASP.NET

  • New! Profile Windows Service

  • New! Show call stacks at user definable stack depth

  • New! Save snapshots and session files

  • New! Compare any two snapshots
    Snapshots no longer has to be consecutive to be compared.

  • New! Work with previously saved sessions
    Saved session files can be loaded and viewed at any time.

  • New! Call stack/methods view
    Shows information about all call stacks and methods that have performed any instance allocation.

  • New! Additional roots identified
    Local variables and method arguments are also identified as root references, in addition to static fields.  

  • New! Native memory view
    Allows the user to view the native memory of the profiled process or any other process running on the computer.

  • Change: Improved performance when profiling processes with a large number of live instances.

  • Fix: Working with dynamic application domains does not crash profiler. 

.NET Memory Profiler is developed by SciTech Software AB
© Copyright 2002-2010. SciTech Software AB. All right reserved.

If you have any comments or questions on the profiler, please write to memprofiler@scitech.se.