JMP - Java Memory Profiler |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||
General About Installation Licence Changelog Screenshot Performance
Documentation
Download
Contacts |
Screenshot - jmp- The first image show what objects there are in memory. The meaning of the columns are:
This image shows how object connect to each other. Finding the owner to objects is the easy way to find memory leaks. Here we can see a summary of who it is that holds references to objects of a given class. This image shows the non-null links in a few objects. Using this it is quite easy to see how large the data structures are. Instances can be inspected by selecting "inspecte instance" in the right-click menu. Strings are a common cause of high memory usage in java. So it is nice to to see if there are dupliate strings in memory. JMP can open a window that shows all strings (well, actually all the char[]) in memory so that you can see which strings that occurs multiple times. In the next image we can see where the java program is spending time. The columns I value the most are the secs and calls. Note! The time used is real time, so if you have 10 threads and your application is running for 60 seconds you should see a total time of 600 seconds used. The meaning of the columns are:
Here is a method call graph.
Here is a window showing all the threads in the system.
Here is the main control window. The graph show how much memory is allocated to the
java heap (pink), used heap memory (blue)
and how much of that memory is used by the currently filtered set (green).
Here you can see what types of event that can be enabled and disabled at runtime.
This means that you can start jmp without tracing anything heavy and then start
profiling when your application has reached a state where profiling is wanted.
This is a window that shows the monitors that exists in the jvm at a given moment.
And here we can see that jmp has detected a deadlock situation |