Installation

Client


Client - Object Graph

Heapster Client

The Heapster client is the interface used to interact with the host JVM, instrumented by the Heapster agent. Here is a screen shot of the Heapster client when it is first started:

The Leak Candidate tab displays a graph of all objects that have not been garbage collected (Keep in mind that all objects really means all objects of classes instrumented by the Heapster agent as specified in the configuration). Unlike other tabs, the Leak Candidate tab is not disposable and is always available. Initially, it displays no data. To update the graph, click the Refresh button. As a result, you may see a graph similar to the following:

This particular graph displays the objects from a JVM running a Heapster test application, which demonstrates the various ways objects can be instantiated. Here is a screen shot of its GUI:

This test application will instantiate objects in variety of ways. It is a test case to ensure Heapster can track all objects, no matter how they are instantiated. The Heapster client screen shot above shows the test app after the LeakyObject radio button was selected and the Leak Objects button was clicked a couple of times. The graph has several interesting features.

The toolbar (also duplicated in the menubar) has some useful functional. On the far left is a button with a garbage can. This button will force a garbage collection in the host JVM. The next button has an image which says new. This button will produce a graph of Instantiation Details (Coming up with an icon for Instantiation Details is not easy. If you can come up with something better than new (which is a play on the Java keyword new), please let me know). Clicking the new button (when the client is connected to a JVM running the leak test as mentioned above), will produce a tab such as this:

This tab is comprised of two sub-tabs for Type and Execution. The Type tab displays a tree which has each instrumented object type at the root (including the object count in square brackets). Each root has sub-nodes which represent the stack trace which lead to the object's instantiation. Here is a screen shot which drills down all the way to the AWT Event Dispatch thread:

On the other hand, the Execution tab roots shows the start of each execution path which leads to object instantiations (also with instantiated object count in square brackets):

Drilling down into a root node will expose the execution path and expose where objects where instantiated:

Navigate to the next page to continue reading about the toolbar functionality.


Installation

Client


Client - Object Graph