Memory Leaks Diagnostic Service

Memory Leaks Diagnostic Service is intended to diagnose memory leaks associated with the use of ObjectSpace. It is in demand in testing of application solutions.

To activate the service, initialize it by calling the Initialize() method. The initialization can be performed, for example, in the Setup(XafApplication) method of the  platform-independent module:

  • c#
  • VB

public sealed partial class NorthwindDCModule : ModuleBase
{
  public override void Setup(XafApplication application)
  {
    base.Setup(application);
    application.SetupComplete += (sender, args) =>
    {
      MemoryLeaksDiagnosticService.Instance.Initialize();
    };
  }
}

Public Partial NotInheritable Class NorthwindDCModule
  Inherits ModuleBase
  Public Overrides Sub Setup(ByVal application As XafApplication)
    MyBase.Setup(application)
    application.SetupComplete += Sub(ByVal sender, ByVal args)
      MemoryLeaksDiagnosticService.Instance.Initialize()
    End Sub
  End Sub
End Class

If diagnostics service is active, the Tools menu contains the Memory Leaks Info item.

service_memory_leaks_diagnostic_1

This item displays a list of all objects in ObjectSpace and UnitOfWork which are not disposed at the moment:

service_memory_leaks_diagnostic_2

Double click on the record shows detailed information about the not disposed object, including the call stack, which allows you to figure out which component created the object:

service_memory_leaks_diagnostic_3

See also Xafari Service.