Our Q1 2012 release cycle has been very exciting! All of the Just products received features and enhancements, and we used the opportunity to officially launch JustDecompile. But so far, we’ve been rather quiet on JustTrace, and the JustTrace team has been working hard to add features that will best help you track down performance and memory issues in your application. We recently added the capability for finding the largest memory retainers, refactored the live data view, and introduced new capabilities for profiling Silverlight applications. If you caught the webinar, you did get to see the latter in action, but here’s a run down of what’s new in Telerik JustTrace Q1 2012.
We’ve added a new view for memory snapshots that will help you track down memory leaks. This view shows you which objects pressure memory the most by retaining other objects that consume a lot of memory. You can use this to reduce memory usage. For example, I may notice large arrays consuming memory, but that in itself doesn’t tell me much. With the largest memory retainers view, it is possible to find which objects are holding onto other objects, such as the arrays, and are the root of the problem.
Here are the terms:
A dominator of a given object A is another object B that is present in all paths in the object reference graph that lead from a GC (Garbage Collector) root to A.
An immediate dominator of a given object A is the nearest of all of A's dominators.
A dominator root is an object which doesn't have dominators.
These terms can be confusing, so here’s the simplified version. Dominators are memory retainers: they hold other objects that consume memory and prevent that memory from being freed. For example, I may have an object that consumes only 32 bytes of memory, but it may reference other objects that in turn hold much more memory. This can be discerned from the view.
The tree displays the retained size and the own size for each object. The important objects to look for are those with a far greater retained size than own size. When a node is expanded, the children displayed are those immediately retained by the parent. This is very useful for analyzing objects that may need optimization or are unnecessarily referencing other objects and therefore preventing them from being collected by the GC.
This was released in the Q3 2011 Service Pack, but it has been enhanced to work with Silverlight. Note: you should run the standalone profiler when working with Silverlight on x64 machines.
JustTrace has had Silverlight support, but what about those out of browser (OOB) Silverlight applications? When selecting Silverlight from the type of application to be profiled, you can now enter the path to a local XAP file.
We are constantly striving to make JustTrace one of the most useful tools in your developer toolbox. Stay tuned for even more exciting changes! And be sure to bother us with your ideas and feedback!
The JustTrace team
Chris Eargle is a Microsoft C# MVP with over a decade of experience designing and developing enterprise applications, and he runs the local .NET User Group: the Columbia Enterprise Developers Guild. He is a frequent guest of conferences and community events promoting best practices and new technologies. Chris is a native Carolinian; his family settled the Dutch Form region of South Carolina in 1752. He currently resides in Columbia with his wife, Binyue, his dog, Laika, and his three cats: Meeko, Tigger, and Sookie. Amazingly, they all get along... except for Meeko, who is by no means meek.