Performance Zone is brought to you in partnership with:

Sajan has posted 1 posts at DZone. View Full User Profile

Top 10 Java Performance Troubleshooting Tools

  • submit to reddit

Here are 10 tools useful for Java application performance troubleshooting.

  • jconsole comes together with JDK 1.5 and above. It is a Java Monitoring and Management Console - JMX-compliant graphical tool for monitoring a Java virtual machine. It can monitor both local and remote JVMs.

  • VisualVM is a visual tool that integrates several existing JDK software tools and lightweight memory and CPU profiling capabilities. This tool is designed for both production and development time use and further enhances the capability of monitoring and performance analysis for the Java SE platform.

  • HeapAnalyzer allows the finding of a possible Java™ heap leak area through its heuristic search engine and analysis of the JavaTM heap dump in Java applications. It analyzes Java heap dumps by parsing the Java heap dump, creating directional graphs, transforming them into directional trees, and executing the heuristic search engine.

  • PerfAnal is a GUI-based tool for analyzing the performance of applications on the Java 2 Platform. You can use PerfAnal to identify performance problems in your code and locate code that needs tuning.

  • JAMon is a free, simple, high performance, thread safe, Java API that allows developers to easily monitor production applications.

  • Eclipse Memory Analyzer is a fast and feature-rich Java heap analyzer that helps you find memory leaks and reduce memory consumption.

  • GCViewer is a free open source tool to visualize data produced by the Java VM options -verbose:gc and -Xloggc:<file>. It also calculates garbage collection related performance metrics (throughput, accumulated pauses, longest pause, etc.).


If you are running your application on HP-UX platform, check out:

  • HPjmeter

    • Identify and diagnose performance problems in Java™ applications running on HP-UX

    • Monitor live Java™ applications and analyze profiling data

    • Capture profiling data with zero preparation when using JDK/JRE 5.0.04 or higher

    • Run the HPjmeter console on HP-UX, Linux, and Windows® systems

    • Improve garbage collection performance

  • HPjconfig is a Java configuration tool for tuning your HP-UX 11i HP Integrity Itanium® and HP 9000 PA-RISC system kernel parameters to match the characteristics of your application. HPjconfig provides kernel parameter recommendations tailored to your HP-UX hardware platform. It offers save and restore functions for easy distribution of tailored recommendations across your customer base. When given specific Java and HP-UX versions, HPjconfig will determine if all of the latest HP-UX patches required for Java performance and functionality are installed on the system, and highlight any missing or superseded patches.

  • Java Out-of-Box Tool is a stand-alone bundle that upon installation will install startup (RC) scripts, modify kernel parameters, rebuild the kernel, and reboot the system. During startup, the startup scripts will modify system tunables, thus providing better “Out of The Box” behavior for Java.


Published at DZone with permission of its author, Sajan Kumar.

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)


Wong Qil replied on Thu, 2008/07/17 - 3:40am

Where are eclipse TPTP and Netbeans Profiler?

Michael Minella replied on Thu, 2008/07/17 - 10:15am

YourKit is tops on my list.  You can find it here.

Cosmin Marginean replied on Thu, 2008/07/17 - 10:53am

PerfAnal - now that's a name for a product that sells.

Geertjan Wielenga replied on Thu, 2008/07/17 - 10:57am in response to: Cosmin Marginean

[quote=cosmin.marginean]PerfAnal - now that's a name for a product that sells.[/quote]


Haha. Those were my thoughts too when I first saw it. 

Thomas Mueller replied on Thu, 2008/07/17 - 1:00pm

My favorite performance analysis tool is: java -Xrunhprof:cpu=samples,depth=8

Slava Imeshev replied on Thu, 2008/07/17 - 6:56pm in response to: Michael Minella


You could add JProfiler to your list. From my experience it is more feature-reach, which you naturally expect from a commercial tool, than the tools you listed.



Slava Imeshev

Cacheonix Systems 



Lukas Zapletal replied on Fri, 2008/07/18 - 2:12am

I am missing the fantastic JRockit monitor tool, now free by Oracle!

Peter Karussell replied on Sat, 2008/07/19 - 3:37am


[quote]PerfAnal - now that's a name for a product that sells.[/quote]


that's a name for a product that sells for stuff that smells ;-)

... and there are two more tools:

[quote] JMeter for load testing (, JAMon for performance monitoring) and JARep for performance reporting.[/quote]

Taken from a recent post on javalobby.

Another related post is here where JavaBench is proposed.

Do you know some more tools which could be useful to analyze web applications??

Onur Ersen replied on Mon, 2008/07/21 - 8:51am

Not much like a troubleshooting but more like analysis Crap4J is a good tool also :)

Lorna Brighton replied on Sun, 2011/03/27 - 4:34am

There are definitely some great tools on this list. As someone who has worked with big distributed systems, I can tell you that Java troubleshooting in a big cluster can be a headache. In my experience it really helps to have a monitoring tool that can monitor a large number of nodes at a time and provide cluster-level statistics. I’ve had good experience with a Java monitoring tool which has this capability, it’s called ClearStone and it specializes in large distributed environments. Hopefully sometime it’ll make the list too :)

Peter Müller replied on Fri, 2013/05/24 - 9:23am

Another helpful utility is jvmtop  - it's a command-line top-like utility which shows all java processes and all relevant jvm metrics. It can also drill down cpu-usage to the thread-level, showing you the most cpu-intensive threads in a live view.

JvmTop 0.4.1 alpha   amd64  8 cpus, Linux 2.6.32-27, load avg 0.12

 3370 rapperSimpleApp  165m  455m  109m  176m  0.12%  0.00% S6U37 web        21
27338 WatchdogManager   11m   28m   23m  130m  0.00%  0.00% S6U37 web        31
19187 m.jvmtop.JvmTop   20m 3544m   13m  130m  0.93%  0.47% S6U37 web        20
16733 artup.Bootstrap  159m  455m  166m  304m  0.12%  0.00% S6U37 web        46

Yusuf Aytaş replied on Thu, 2013/11/21 - 3:33pm

In some cases, you may need to monitor specic scenarios for a period of time. To do that, you can use caudit.

Alessandro De S... replied on Tue, 2013/11/26 - 7:01am

 I can also suggest tools from from SpyGlassTools:

Tracer for monitoring Java Standard components:

Garbage Collector Analyzer for monitoring JVM and Memory management:

They are both VisualVm plugins with free version.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.