Tuesday, 12 July 2011

JMP - Java Memory Profiler

JMP is a profiler for java that can be used to trace objects usage and method timings. JMP uses the JVMPI interface to gather statistics and interact with the JVM. JMP uses a GTK+ interface to show the status.
Since jmp use jvmpi it only works with java/1.2 up to java/1.5. If you use java/6 you can not use jmp. Work has started on tijmp, a new profiler that uses the the tools interface (jvmti). See the tijmp page
JMP normally uses one window to show the classes in memory. Each class has summary information for number of instances and total bytes of used memory for all the instances.
JMP can perform heap analysis and has the ability to show which objects own (have references to) all the objects of a specified class. This is a great way to find memory leaks.
JMP also shows method timings and calls in another window. Several columns show time taken in the method, number of calls to each method, time taken in methods called.
JMP collects information about which method are called and from where, this information is used to build call graphs.
JMP interacts with the normal java threads and also uses one extra thread for GTK+ with a timer to systematically update the stats.
JMP is written in C, it is designed for speed.
It should now be possible to build and run jmp under windows.

Most of the applications today are designed and developed for simultaneous use by a large number of users. At times there are underlying problems in the code, which may cause error conditions such as Memory leaks, Race conditions, Thread locks and so on which if neglected, stretches the use of resources beyond limits, causing the application to slow down or even crash. Thus, it becomes critical for the developer to ensure that the application is available, reliable, scalable and makes the most optimal use of the available resources.
Faster, efficient and more powerful machines temporarily hide performance and other problems, but errors in code if left unidentified can cause major application as well as system performance issues. To detect such coding faults manually is an extremely tedious, error prone and expensive task. AppPerfect Java Profiler is designed to assist you find such errors by profiling your application as well as vital resources of the system on which you are running the application.
Profiling is the process of monitoring various JVM level parameters such as Method Execution, Thread Execution, Object Creation and Garbage Collection. It will provide you with a finer view of your target application execution and its resource utilization.
AppPerfect Java Profiler eliminates the need to spend long hours going through the code, and pinpoints the problems associated with your application. It provides complete and accurate statistical information that helps you trace coding errors in your application.
AppPerfect Java Profiler helps you diagnose and resolve performance problems, memory leaks and multi-threading problems in your Java or J2EE server applications to ensure the highest level of stability and scalability for your applications. AppPerfect Java Profiler provides you with a root-cause analysis of these problems and helps you resolve them.
AppPerfect Java Profiler provides you a unified view of all resources that is memory, methods, threads and monitors to help you understand your JVM's behavior, performance characteristics etc. to reach to bottom of problem quickly. AppPerfect Java Profiler is a comprehensive Java performance tuning solution with support for Heap Analysis, Thread Analysis, Monitor analysis and Deadlocks detection. It is one of the best and finest profiler available in the large market of profilers.