.NET Memory Profiler Release Notes
Below is a summary of additions and changes to .NET Memory Profiler:
Version 3.5.151, released June 15, 2010
- Fix: Type name of arrays of nested types and generic types was not correctly presented in the Types view
The declaring type and the generic type arguments were not correctly included in the name.
- Fix: Corrupt session files created by v3.5.131 can now be loaded.
Version 3.5.150, released May 25, 2010
- New: If more than one Web development server (WebDev.WebServer) is found the user will be presented
with the option to select development server.
When profiling a Visual Studio ASP.NET project, the development server is automatically selected based on the target framework
of the project.
- Fix: A file was missing in the previous installer, which caused problems with the dispose tracker when
profiling a .NET 1.x application.
Version 3.5.144, released March 31, 2010
- Fix: All dependencies of .NET Runtime 2.0 removed, it is now possible to install and
use the profiler on a system with only .NET 4.0 installed.
Previous version had a few left-over dependencies that required the .NET 2.0 runtime to be installed, even
if both the profiler and the profiled process was running under .NET 4.0.
- Fix: When selecting Cancel in the evaluation window, the profiler did not exit completely.
Version 3.5.136, released February 22, 2010
- Fix: Links to additional information about undisposable types classification did not
work correctly in the tooltips in the Types/Resources view.
- Fix: Saving session files with multiple snapshots could cause corrupt files to be created.
- Fix: The live bytes sum in the status bar was not correct (but the column sum value correctly reflected the total number of live bites).
- Fix: Better support for command line response files.
- Fix: Fixed an additional problem that could cause an exception during initialization of Managed C++ programs under rare circumstances.
- New: Column sum values are presented for the columns "New live bytes" and "Removed live bytes" in the Types/Resource view.
Version 3.5.131, released January 29, 2010
- New: A new memory analyzer will provide information about instances in the finalizer queue.
- Fix: When switching away from certain settings pages in Visual Studio (Tools->Options),
an endless WM_GETDLGCODE loop could occur, causing Visual Studio to freeze.
- Fix: User interface was not correctly updated when initializing symbols store cache location.
- Fix: Fixed a problem that could cause an exception during initialization of Managed C++ programs.
- Fix: Under rare circumstances the native stack walker could get stuck in an infinite loop.
Version 3.5.130, released January 11, 2010
- Fix: Due to an error introduced in v3.5.115 the native stack walker failed to use newly downloaded symbols from the Microsoft symbol store.
This error caused native stack information to be less detailed for operating system DLLs and .NET runtime DLLs..
- Fix: Instances only reachable from a WeakReference was considered reachable when attaching and importing
This could also cause problems when calculating held instances..
- Change: Significantly improved performance when analyzing held instances in large snapshots.
- Change: The number of background calculations is limited by available 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
Version 3.0.113, released May 4, 2007
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
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
Version 2.6.89, released July 8, 2006
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
Version 2.6.77, released January 30, 2006
Version 2.6.76, released January 26, 2006
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
Version 2.6.60, released November 4, 2005
Version 2.6.57, released October 26, 2005
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
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
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
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
Version 2.0.13.0, released Feb 13,
2004
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.