Skip to main content

VisualVM - All-in-One Java Troubleshooting Tool

Posted by emcmanus on February 20, 2008 at 7:40 AM PST

VisualVM is a new graphical troubleshooting tool that is being developed in a project on It gives access to the functionality that is available through existing JDK tools such as , jinfo, and jstack, and adds to that support for lightweight profiling of CPU and memory usage.

These screenshots from the project page give an idea of what the tool can do.

Basic telemetry of running Java app
Profiling performance of running Java app

The tool is extensible via downloadable plugins, and the latest milestone publishes an API for developing your own plugins. Also, if you have developed plugins using the JConsole Plugin API it's possible to use them unchanged in VisualVM.

I'm not personally involved in this project but I'm certainly following it with great interest.

[Tags: .]


Hi, I've a question on Jconsole... For our application we've specialized, and we've the problem that we can't see these notifications in jConsole anyway Is it possible this in jConsole of last visualVm rel.? thanks

I agree with you! thanks luke

We don't recommend creating custom subclasses of Notification because it tends to create problems with clients like those you are seeing. Instead, we recommend packing the custom information that you want to include in the Notification inside a CompositeData that you set as the Notification's UserData.

However, if you do want to go with custom classes, then you can probably make it work by specifying a classpath to JConsole. The command would be something like:

jconsole -J-Djava.class.path=$JDK_HOME/lib/jconsole.jar:$JDK_HOME/lib/tools.jar:/some/path/custom.jar

(using ; instead of : if on Windows). I haven't tried this with VisualVM but I see it has a --cp:a option that you can use to add things to the classpath, so you might be able to run it with just --cp:a /some/path/custom.jar