Analysis Issues List

The following issues are currently detected by the memory analyser. Additional issues will be added in updates of .NET Memory Profiler. Suggestions for additional issues that should be detected by the memory analyser can be sent to memprofiler@scitech.se.

Description: SeriousWarning-128.png Serious warning

      Potential memory leak
An instance has been detected as a potential memory leak by a memory assertion. For more information about memory assertions, see Using Assertions to Detect Memory Leaks. This issue cannot be ignored. To remove this issue, either correct the memory leak, or, if it is an falsely identified memory leak, modify the memory assertion so that the instance is not included.

      Disposed instance with direct EventHandler roots
A disposed instance is directly rooted by an EventHandler, i.e., the instance is only used as the target of an EventHandler and it cannot be reached from any other root without passing through a delegate. Since a disposed instance should no longer be used and EventHandlers are a common cause of memory leaks, this issue is a strong indication of a memory leak.

      Disposed instance with direct delegate roots
A disposed instance is directly rooted by a delegate, i.e., the instance is only used as the target of a delegate, and it cannot be reached from any other root without passing through a delegate. Since a disposed instance should no longer be used and delegates s are a common cause of memory leaks, this issue is a strong indication of a memory leak.

      Undisposed instances (release resource, no finalizer)
A disposable instance has been garbage collected without being properly disposed. Based on the classification of disposable types, disposing the instance might have released an unmanaged resource. The type of the instance has no finalizer, so failing to dispose the instance can cause an unmanaged resource leak. For more information about disposable types classification and undisposed instances, see Disposable Types Classification and Undisposed Instances.

 Warning

      Direct EventHandler roots
An instance is directly rooted by an EventHandler, i.e., the instance is only used as the target of an EventHandler and it cannot be reached from any other root without passing through a delegate. Since EventHandlers are a common cause of memory leaks, this issue can indicate a memory leak. Investigate the instance and the EventHandler instance to find out whether the instance is unintentionally held by the EventHandler, or if the issue can be ignored.

      Disposed instance
An instance is disposed but still reachable from one or more roots. Since a disposed instance should normally no longer be used, this can indicate a memory leak. Investigate the instance to find out whether the instance is unintentionally kept alive, or if the issue can be ignored.

      Undisposed instances (release resource and remove external references)
A disposable instance has been garbage collected without being properly disposed. Based on the classification of disposable types, disposing the instance might have released an unmanaged resource and removed external references to the instance. Failing to dispose instances of this type can cause bad resource and memory utilization, and even memory leaks. For more information about disposable types classification and undisposed instances, see Disposable Types Classification and Undisposed Instances.

      Undisposed instances (release resource)
A disposable instance has been garbage collected without being properly disposed. Based on the classification of disposable types, disposing the instance might have released an unmanaged resource. Failing to dispose instances of this type can cause bad resource utilization. For more information about disposable types classification and undisposed instances, see Disposable Types Classification and Undisposed Instances.

      Undisposed instances (remove external references)
A disposable instance has been garbage collected without being properly disposed. Based on the classification of disposable types, disposing the instance might have removed external references to the instance. Failing to dispose instances of this type can cause bad memory utilization, and even memory leaks. For more information about disposable types classification and undisposed instances, see Disposable Types Classification and Undisposed Instances.

Description: MinorWarning-128.png Minor warning

      Direct delegate roots
An instance is directly rooted by a delegate, i.e., the instance is only used as the target of a delegate and it cannot be reached from any other root without passing through a delegate. Since delegates are a common cause of memory leaks, this issue can indicate a memory leak. Investigate the instance and the delegate instance to find out whether the instance is unintentionally held by the delegate, or if the issue can be ignored.

      Pinned instance
An instance is pinned in memory. Pinning instances prevents the garbage collector from moving the instance and will affect the efficiency of the garbage collector. If possible, pinning instances should be avoided. If it is not possible, then the instance should be pinned for as short period of time as possible.

Description: IndirectWarning-128.png Indirect warning

      Disposed instance with indirect EventHandler roots
A disposed instance is held by another instance that is directly rooted  by an EventHandler. A link will be provided to the he instance that is directly rooted by the EventHandler instance. Investigate the directly rooted instance to resolve this issue.

      Indirect EventHandler roots
An instance is held by another instance that is directly rooted by an EventHandler. A link will be provided to the he instance that is directly rooted by the EventHandler. Investigate the directly rooted instance to resolve this issue.

      Disposed instance with indirect delegate roots
A disposed instance is held by another instance that is directly rooted by a delegate. A link will be provided to the he instance that is directly rooted by the delegate. Investigate the directly rooted instance to resolve this issue.

      Indirect delegate roots
An instance is held by another instance that is directly rooted by a delegate. A link will be provided to the he instance that is directly rooted by the delegate. Investigate the directly rooted instance to resolve this issue.

Description: Suggestion-128.png Suggestion

      Undisposed instances (perform action)
A disposable instance has been garbage collected without being properly disposed. Based on the classification of disposable types, disposing the instance might have performed some exit or cleanup operation. This operation can for instance be flushing data to a file, committing or reverting a transaction, clearing security buffers, or deleting temporary files. For more information about disposable types classification and undisposed instances, see Disposable Types Classification and Undisposed Instances.

      Undisposed instances (memory/resource utilization)
A disposable instance has been garbage collected without being properly disposed. Based on the classification of disposable types, disposing the instance might dispose other instances, release COM interfaces, and suppress finalization. Failing to dispose instances of this type can cause bad memory and resource utilization. For more information about disposable types classification and undisposed instances, see Disposable Types Classification and Undisposed Instances.

 Information

      ASP.NET session state summary
This issue presents summary information about ASP.NET session states. This includes information about how many session state instances exists, how many instances are held by the session state, and how many bytes are used by the held session state instances. Links are provided to the session state types, and all other types that have instances stored as session state.

      ASP.NET session key
An instance is used as, or is part of, an ASP.NET session state key.

      ASP.NET session value
An instance is used as, or is part of, an ASP.NET session state value.

      ASP.NET session state instance
An instance acts as a session state container. This is normally an instance of the InProcSessionState class.

      ASP.NET cache summary
This issue presents summary information about ASP.NET cache. This includes information about how many instances are held by the cache and how many bytes are used by the held cache instances. Links are provided to the types that have instances stored in the cache.

      ASP.NET cache key
An instance is used as, or is part of, an ASP.NET cache key.

      ASP.NET cache value
An instance is used as, or is part of, an ASP.NET cache value.

      Large instance
An instance is stored in the large object heap.

      Undisposed instances (clear references)
A disposable instance has been garbage collected without being properly disposed. Based on the classification of disposable types, disposing the instance might clear references to other instances, but no additional operation will be performed. Since a disposed instance should normally no longer be used, clearing references from the instance should not affect the memory usage. Failing to dispose instances of this type will therefore not cause any performance or memory penalty. For more information about disposable types classification and undisposed instances, see Disposable Types Classification and Undisposed Instances.

      Undisposed instances (no action)
A disposable instance has been garbage collected without being properly disposed. Based on the classification of disposable types, disposing the instance will not cause any action to be performed. Failing to dispose instances of this type will therefore not cause any performance or memory penalty. For more information about disposable types classification and undisposed instances, see Disposable Types Classification and Undisposed Instances.

      Undisposed instances (unclassified)
A disposable instance has been garbage collected without being properly disposed. No information about the type of the instance is available, so the importance of disposing the instance cannot be determined. However, it is recommended that all disposable instances are properly disposed. For more information about disposable types classification and undisposed instances, see Disposable Types Classification and Undisposed Instances.