Open Source Java Profilers
jConsole tool is a JMX-compliant graphical tool for monitoring a JVM (Java virtual machine). It is a very simple tool and comes with Java Development Kit (JDK). It can monitor Memory, Threads, CPU, Java Class Loading and MBeans in both local and remote JVMs. It can also monitor the JVM and provide basic reporting. It allows you to save the chart data to store it in CSV file.
Learn more about JConsole here: openjdk.java.net/tools/svc/jconsole
VisualVM is a full fledged visual tool integrating several commandline JDK tools and lightweight profiling capabilities. It is designed for both production and development use. It enhances the capability of JVM monitoring and performance analysis for the Java Applications. Personally I would recommend VisualVM against any commercial tool out there since because the rich set of features it has. VisualVM works with local and remote Java applications. VisualVM monitors application CPU usage, GC activity, heap and permanent generation memory, number of loaded classes and running threads. You can easily detect suspicious memory consumption and take an action – invoke garbage collection in the application or take a heap dump and browse the contents of application heap. VisualVM monitors Java application threads and displayed in a timeline and table. It allows you to take and display thread dumps with click of a button. It allows you to take and browse heap dumps. Also includes the core dumps analyzer utility.
The VisualVM analyzer allows you to save the profiler snapshot to analyse the reports offline. Since VisualVM is built on the NetBeans Platform, its architecture is modular and easy to extend with plugins. It also can be integrated to Eclipse IDE.
Learn more about the VisualVM here: visualvm.java.net
For Eclipse Users
Eclipse Test & Performance Tools Platform Project is a universal platform for test and performance tools.
The TPTP Monitoring Tools project collects, analyzes, aggregates and visualizes data that can be captured in the log and statistical models. The typical examples are the collection of system or application resources such as CPU or memory utilization and support for the viewing, aggregation and analysis of that data.
Learn more about TPTP here: www.eclipse.org/tptp
JVM Monitor is an open source Java profiler. JVM Monitor is integrated with Eclipse IDE to monitor the Java Threads, Memory and CPU usage of Java applications. JVM Monitor doesn’t require and JVM launch configurations and it finds out running JVM’s automatically in local host. JVM Monitor can monitor the JVM’s running in remote host for which it requires the hostname and port number of its JMX Console.
JVM Monitor is very handy and will be useful to quickly inspect any Java applications without much configurations. JVM Monitor is open source software distributed under Eclipse Public License v1.0.
Checkout the JVM Monitor here: www.jvmmonitor.org
Eclipse Memory Analyzer comes with handful of features to analyse and find memory leaks and reduce memory consumption.
Use the Memory Analyzer to analyze productive heap dumps with hundreds of millions of objects, quickly calculate the retained sizes of objects, to find out what is preventing the Garbage Collector from collecting objects, run a report to automatically extract leak suspects.
There is detailed documentation available for the Memory Analyzer in the blog here.
For NetBeans Users
NetBeans profiler is a fully featured Java profiling tool integrated into the NetBeans IDE. It helps you to profile the CPU, memory, Java threads and locks profiling as well. Also it provides a basic JVM monitoring, allowing developers to be more productive in solving performance and memory issues.
Learn more about NetBeans Profiler here: profiler.netbeans.org