JustTrace is perhaps the friendliest profiler on the market, but you will find that JustTrace Q3 2011 is even further enhanced with polish and enhancements to the user experience to make this a must-have tool for better code. If you’re interested in the detailed improvements we’ve made to JustTrace this release, please take a look at the version notes. This article will focus on two new features: Compare Snapshots for Memory Profiler and Call Tree Navigation.
Previous editions of JustTrace had the Compare Snapshots feature but were restricted to performance snapshots. This has now been expanded to include memory snapshots. Since drag and drop for tabs confused some people, we added a context menu to the tabs for comparison. Don’t worry, drag and drop still works.
Performing either action opens a comparison tab.
On this screen is a summary of objects in various stages of garbage collection (the large object heap and generations 0, 1 and 2 in the small object heap). I made two passes through the application in making these screenshots, and you can see how objects were forced into higher generations by garbage collection.
The panel below the summary contains the classes in both snapshots, with two additional fields to compare the differences in instances and allocation size.
Call Tree Navigation
Once you have identified a potentially problematic method, it is essential to then understand how it is being called. The Call Tree Navigation feature in JustTrace simplifies this process for you. First, identify the method of interest in the Method List.
I have chosen the Sphere.Intersect method of the RayTracer application, since it has the highest own time of the application specific methods. Then, right click the row and click the Navigate to Call Tree menu option.
This will bring you back to the Call Tree with the navigator present at the top of the screen.
You can then navigate through the call tree to view calls to this method.
The Call Tree Navigator can be brought up any time in the Call Tree view by click the arrow button.
You can then type the method name in the Navigate to textbox to search for a method in the call tree.
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.