Which tools to use to monitor and analyse performance of Java?

Java Troubleshooting
Sebastian Misiewicz
Java - Troubleshooting #1
The list contains applications, which I've been using or I am using in my commercial and non-commercial projects.

Profile and monitor applications


  • visualvm

    VisualVM

    Allows you to monitor and analyse performance. It can be used as a stand-alone application or integrated with an IDE (currently Eclipse is supported).
    • Can be used as stand-alone application or from Eclipse
    • Great visual analysis of CPU, Heap/PermGen, Classes and Threads
  • JVM Monitor

    It's a profiler integrated with Eclipse.
    • For simple usages should be enough
    • Integration with Eclipse only
    • Sometimes it gets stuck and the list of available applications to profile won't be refreshed
  • jprofiler

    JProfiler

    The award winning tool for profiling Java applications. If you need the best tool around and you have some money to spend you can go for it.
    • Award winning tool
    • Integration with application servers
    • Trial licence
  • Thread and Monitor Dump Analyzer for Java

    Useful for analysing javacore dumps.
    • Collects the data and shows it in a very simple form, but still better than raw file

Heap dump


  • mat

    Memory Analyzer (MAT)

    Great tool for analysing hprof heap dumps.
    • Acquire a heap dump from running process
    • Wizard for easy start
    • Build-in reports (leak suspects, top components)
  • HeapAnalyser

    I've used it for analysing memory problems on IBM WebSphere application server.
    A graphical tool for discovering possible Java heap leaks
    • Supports .phd and .ha
    • Various possibilities to analyse heap
    • Avalilable as a jar file

Logs


  • StdErr Analyser - hsa_jdk15.jar

    If you face a problem and the only thing you have is a log file (the stderr log), this application may be helpful. It plots heap size (with free heap, used heap and allocation failures).
    • Only command line
    • Hard to find