How to find instance from object retention graph?

In the instance list I've found an instance that I was expecting should have been cleaned up.

So, I looked at the object retention graph for this instance. There's an interesting instance in the list of instances that reference the leaked object. I'd like to look at the properties of this instance. So, I clicked on the interesting instance to select it on the graph, and then I switched back to the instance list.

I'm expecting the instance I selected on the graph to be selected in the instance list so that I can look at it's properties in the hopes of identifying it from the properties, but it's not selected. There are hundreds of instances in the list.

How, from an Object Retention Graph do I view the properties of a particular instance I've found on the graph?

Comments

  • One way to do it is to right click the object and choose "Show Object Retention Graph for this object". That'll make the "current" object the one you've chosen, so if you then go to the instance list, it'll be selected.

    Hope that helps,
    Alex
    Developer,
    Red Gate .NET Tools
  • Hi Alex.

    What you described is what I thought should happen too, but it doesn't.

    In visual studio created a C# Windows Application and changed Form1.cs to this:

    namespace WindowsApplication1
    {
    class A
    {
    public A(string n)
    {
    name = n;
    }

    string name;
    public B b;
    };

    class B
    {
    };


    public partial class Form1 : Form
    {
    A a1 = new A("a1");
    A a2 = new A("a2");
    A a3 = new A("a3");
    A a4 = new A("a4");
    A a5 = new A("a5");

    public Form1()
    {
    InitializeComponent();

    a3.b = new B();
    }
    }
    }


    Then followed these steps:
    * Run this app with the memory profiler
    * Capture a snapshot
    * Go to the class view
    * Select the 'B' class and go to the instance view
    * There should only be one instance, select it and go to the object retention graph
    * There is an A object referencing the B instance. Select the A object, right click and choose ' Show object retention graph for this A'.
    * Now, press on the 'Instance List' button to switch back to that view.

    => No row seems to be selected. The top row has the '+' icon to the left of the class name. I don't think that means that row is selected though. If I press on the + to see the properties of that instance, it says it's name is "a1".
    => The instance that should be referencing the B instance should have "a3" as its name. I don't appear to be able to find this information from ANTS memory profiler.

    Any further help would be appreciated.

    -Regards,
    Scott
  • I understand. I've tried to follow my own instructions, but as you say, they didn't work. I'm afraid there is no way to find the details about an instance from the object retention graph in this version. I'll add it as a request for the next version.

    Thanks,
    Alex
    Developer,
    Red Gate .NET Tools
  • Ok. Great, it would be a useful feature. Thanks.
  • I've just tried this again to help another customer, and it seems to work in some situations. I'm baffled now.
    Alex
    Developer,
    Red Gate .NET Tools
Sign In or Register to comment.