Monday Mar 07, 2011

VisualVM 1.3.2 Released

VisualVM 1.3.2 has been released and is available for download at VisualVM 1.3.2 delivers several bugfixes (especially for JDK 7) and necessary updates caused by migration to Kenai. See the Release Notes for list of all changes.

Monday Sep 20, 2010

VisualVM 1.3.1 Released

VisualVM 1.3.1 has been released and is available for download at The new version is built on the NetBeans Platform 6.9.1 and delivers number of bugfixes. See the Release Notes for more details.

Monday Jul 26, 2010

VisualVM 1.3 Released

The new version of the VisualVM tool is now available at VisualVM 1.3 introduces several new features and improvements, extends the API for plugins and fixes many bugs. Details of the changes can be found in the Release Notes. Let's look at the most interesting new features in more detail:

Sampler In The Core Tool

The sampling profiler that was originally provided as a plugin has now been integrated into the core tool. Sampler provides a lightweight and safe way to determine performance bottlenecks and memory problems and adds minimal overhead to the target application. It can be used for local and remote applications running on JVMs from different vendors and is designed to be used in production environments. Once a problem is identified, it can be further analyzed in detail using the instrumenting Profiler with appropriate settings (profiling roots, instrumentation filter). Profiler is available for local applications running on an Oracle/Sun-compatible JDK and is mostly intended as a profiling tool for Java developers.

Sampler And Profiler Presets

All the Sampler and Profiler settings can now be saved into presets and reused for further application/VisualVM sessions. This makes it much easier for developers to analyze and improve applications using the iterative profile-fix-restart approach. Moreover, a preset can be selected automatically for an application based on its main class or display name.

Remote Heap Dumps

In previous releases, the VisualVM was only able to take heap dumps of applications that were running locally. The only way to dump the heap of a remote application was by using the MBeans plugin and invoking the appropriate MBean operation ( | Operations | dumpHeap). Starting with VisualVM 1.3, you can now use the Heap Dump actions and buttons in the tool to take a heap dump of applications that are running remotely. When invoked, a dialog is displayed that enables you to specify the full path on the remote system where you want to dump the heap. After the heap dump is created, you need to manually copy the file to your local machine and use the Load action to open and analyze the file using VisualVM.

Monitoring Remote Hosts

In every release of VisualVM it is possible to open the Local system node in the Applications view and see the machine setup (OS, architecture, number of processors etc.), actual CPU load (not available for Windows OS) and physical & swap memory usage. VisualVM 1.3 enables you to obtain this information for remote hosts as well if the host has at least one JMX-enabled application defined in VisualVM. The data is obtained using the application's JMX connection. If the "proxy" application finishes, the live data will freeze and will be updated again when another JMX-enabled application becomes available on that host.

Sorting Hosts, Applications, Coredumps And Snapshots

By default, all nodes are sorted by the insertion time. This means that the last discovered application is added to the end of the list of running applications. In VisualVM 1.3 you can newly sort applications also according to their display name or process ID, which simplifies monitoring systems that are running many Java applications. The other nodes can now be sorted either by the insertion time or by display name.

Tracer Framework And Probes

Tracer is a new framework and GUI for monitoring and analyzing Java applications. Using various types of probes, Tracer gathers metrics from an application and displays the data in a timeline. This gives a quick overview of what is happening in various parts of the application and allows you to easily determine the relations between the metrics. The values are displayed both graphically and in a table and can be exported to common formats for further processing with external tools. VisualVM 1.3 comes with several sets of Tracer probes that are distributed as plugins: Monitor Probes, JVM Probes, Jvmstat Probes, Swing Probes, JavaFX probes and DTrace Probes.

Threads Inspector Plugin

The Threads Inspector integrates with the Threads tab and allows you to analyze the stack trace(s) of one or more selected threads directly without requiring you to take and open full thread dumps. This is extremely useful when you need to quickly analyze various threading problems.

Recognizing Alternative JVM Languages

Some developers use VisualVM as a monitoring and profiling tool for alternative JVM languages that do not have dedicated tooling. VisualVM now recognizes the Clojure, Groovy, JRuby, Jython and Scala runtimes, enabling these developers to easily find the appropriate processes.

Built On NetBeans Platform 6.9

VisualVM 1.3 uses the most recent NetBeans Platform and profiler release to ensure the best performance and greatest stability. The HeapWalker now displays local variables in the Threads section of the Summary | Overview view, providing a better context for the state of the heap at the time the heap dump is created.

VisualVM 1.3 is available for download at You can send your comments to the VisualVM developers by using the feedback mailing list. The API documentation can be found here.

Friday Jul 09, 2010

JDK 6 Update 21 Includes VisualVM 1.2.2

The latest JDK 6 Update 21 from Oracle includes VisualVM 1.2.2, the most recent VisualVM tool version. The list of changes is available in VisualVM 1.2.2 Release Notes or in JDK 6u21 Release Notes.

The most visible change in the new Java VisualVM is Oracle rebranding which includes new splash screen and About dialog graphics, and a slightly redesigned Start Page.

Wednesday Jun 23, 2010

NetBeans IDE 6.9 Released

NetBeans IDE 6.9 has been released last week. You can download it from NetBeans site. News in this release are listed in NetBeans IDE 6.9 Release Information and you can also watch some of the new features in NetBeans 6.9 Overview video.

NetBeans Profiler has enhanced HeapWalker. Thread dump in the overview part of HeapWalker was extended to display information about local variables, which are temporary GC roots. it is possible to navigate from a local variable to its corresponding instance in the instance view and from Java Frame GC root in references view to a corresponding local variable in the thread dump. This enhancement should help users to match Java Frame GC roots to a corresponding local variable.


The list of bug fixes in NetBeans Profiler 6.9 is available here.

Friday Apr 30, 2010

Problems Adding Remote Hosts in VisualVM on Linux/Solaris

Some problems have been identified in VisualVM when running on Linux or Solaris using OpenJDK or JDK 7. Due to a JDK bug in GTK LaF implementation it's not possible to open the Host customizer in VisualVM 1.2 and newer. This affects the 'Add Remote Host' and 'Host Properties' actions which throw a java.lang.NullPointerException and don't allow to edit and/or add hosts. Details are available in the VisualVM Troubleshooting Guide.

There's an easy workaround to this problem, the VisualVM can be configured to use a different look'n'feel: visualvm --laf Nimbus or visualvm --laf Metal. The LaF to be used can be configured permanently in visualvm/etc/visualvm.conf configuration file. Another possibility is to run the VisualVM using Sun JDK 6.

The problem is now resolved on VisualVM side in development builds and will be available in the next release.

Wednesday Jan 27, 2010

Oracle Plans for NetBeans IDE

This is how Oracle sees the NetBeans future in context of the other supported IDEs, as presented in Oracle + Sun Strategy Update Webcast held on January 27th, 2010:

  • NetBeans continues as Lightweight IDE for Java Developers
    • Focus on Java EE6, Java ME, and Scripting
    • Increased focus on Mobile Development and Scripting with Dynamic Languages
    • Hudson continues as Open Source Continuous Build solution

  • Oracle JDeveloper continues as Oracle's Strategic Development Tool
    • Integrated Development Environment for Oracle Fusion Middleware
    • Strategic Development Tool for Oracle's Applications including Fusion Applications

  • Oracle continues Eclipse contributions
    • Oracle is a Strategic Member of Eclipse
    • Continued delivery of new features in Oracle Enterprise Pack for Eclipse 11g

Update: More details on the NetBeans future are available in the Oracle Developer Tools Software Strategy Webcast.

Wednesday Jan 13, 2010

JDK 6 Update 18 Includes VisualVM 1.2.1

The latest Sun JDK 6 Update 18 includes VisualVM 1.2.1 introducing many new features and improvements. The list of changes is available in VisualVM 1.2.1 Release Notes or in JDK 6u18 Release Notes.

Wednesday Jan 06, 2010

VisualVM 1.2.2 Released

VisualVM 1.2.2 has been released and is available for download at The new version upgrades the underlying framework to the NetBeans Platform 6.8 and delivers several performance improvements and bugfixes. See the Release Notes for more details.

Monday Nov 09, 2009

VisualVM 1.2.1 Released

VisualVM 1.2.1 has been released to fix compatibility issues with JDK 6 Update 17 (and newer) and several other problems:

  • Issue 333: HeapWalker in VisualVM doesn't work with JDK 6 Update 17+
  • Issue 327: Maximum value in Monitor charts is Integer.MAX_VALUE
  • Issue 332: NPE in VisualVM-Sampler

See the Release Notes for more details. VisualVM 1.2.1 can be downloaded at

Wednesday Oct 21, 2009

VisualVM 1.2 Released

New version of the VisualVM tool has been released. VisualVM 1.2 introduces many new features and improvements, extends the API for plugins and fixes many bugs.


These are some of the new features as mentioned in the Release Notes:

  • Sampling CPU and Memory profiler plugin
  • Support for multiple jstatd connections on a single local/remote host
  • New charts with dynamic tooltips, public Charts API for plugins
  • Monitor and Threads tab are saved into Application Snapshot
  • Properties UI for Applications, Hosts and Snapshots, public Properties API for plugins
  • Customizable proxy settings in Options dialog
  • UI for customizing SSL certificates in Options dialog
  • Built on NetBeans Platform & profiler 6.7.1:
    • Exporting profiler snapshots to HTML, XML and CSV
    • Computing retained size in HeapWalker
    • OQL scripting support in HeapWalker
    • Thread stack traces at the heap dump in HeapWalker
    • Improved appearance on Mac OS X

VisualVM 1.2 can be downloaded at Feedback to VisualVM developers can be sent using this mailing list. The API documentation can be found here.

Monday Oct 05, 2009

VisualVM 1.2 Test Build Released

VisualVM 1.2 Test Build has been released at The developers are asking the community to help with stabilizing the release by downloading the Test Build, trying out the new features and providing feedback at or filing bug reports into the Issue Tracker.

The major new features in VisualVM 1.2 will include a sampling CPU and memory profiler, enhanced support for jstatd connections, redesigned charts and much more. Details about the release with a more detailed list of improvements are available in the Release Notes document.

Monday Aug 24, 2009

Five VisualVM Myths Demystified

VisualVM has been released more than one year ago and since then several myths appeared around the tool without any real basis. Continue reading this article to uncover the five most frequent errors:

VisualVM is not (just) a Java profiler

Many users call the tool the "VisualVM Java profiler" and compare it with the commercial Java profilers. VisualVM is a Java monitoring and troubleshooting tool - it detects and recognizes running applications, browses their MBeans, takes thread and heap dumps, shows VM configuration and metrics and saves these information into application snapshots. It also provides basic profiling capabilities, but that's just one of the features. If you need a full-featured mature Java profiler for your daily development, check out the NetBeans profiler.

VisualVM doesn't see all Java applications

The users expect VisualVM to see at least all the locally running Java applications. Not seeing a Windows service Java process in the Applications tree is a quite often complaint. The truth is that VisualVM only lists the applications started by the same user who's running the tool. This is how the jvmstat technology used by VisualVM works, the same applications can be listed by the 'jps' command. The applications not discovered by VisualVM can be added manually using a JMX connection.

VisualVM doesn't require Sun JDK

In many articles around the Web there's a note that VisualVM doesn't work with other than the Sun JDK, namely that it cannot be used on Mac. Not correct, VisualVM itself runs fine on Sun JDK 6+, Open JDK 6+, Apple JDK 6 and HP-UX PA-RISC JDK 6. Monitored applications can run virtually any 1.4+ JDK, the tool has been tested to work with Sun JDK, Open JDK, Apple JDK, JRockit JDK, IBM JDK, HP-UX PA-RISC JDK, SAP JDK and Diablo JDK. Based on the JDK version and vendor various amount of information and features is available.

NetBeans profiler isn't VisualVM integration into the NetBeans IDE

The NetBeans profiler is sometimes incorrectly mentioned to be the VisualVM integrated into the NetBeans IDE. This statement is kind of inside out, VisualVM reuses some of the NetBeans profiler's features: profiling engine, HeapWalker, threads monitor, UI components etc. NetBeans profiler has been introduced in 2004, VisualVM in 2007. The VisualVM - IDE integration is available for Eclipse and IDEA.

VisualVM-JConsole plugin is not JConsole integrated into VisualVM

"I've installed the JConsole plugin and it doesn't show any tab!" Why? Because the plugin is a container for the JConsole plugins which runs them inside VisualVM. It's not the JConsole tool itself. Typically you don't want to install the plugin at all unless you've got a custom JConsole plugin which you need to use in VisualVM.

There's one more thing which is often misunderstood about the tool - its name. It's not "Visual VM" nor "VVM", also "JVisualVM" or "jVVM" is incorrect. The only correct name of the tool is VisualVM if it's the standalone release from and Java VisualVM when it's the JDK tool located in the bin directory.

Thursday Aug 13, 2009

Java VisualVM Blogging Contest Results Announced

The Java VisualVM Blogging Contest results have (finally!) been announced at Congratulations to the winners and a big thank you to all participants!

Thursday Jul 23, 2009

Two Tricks On Using VisualVM

This blog describes two useful tricks on using the VisualVM tool. They won't find a performance bottleneck or memory leak for you but definitely will make using the tool even easier:o)

Doubleclick to invoke default action in the Applications tree!

Each node in the Applications tree can define some actions which are displayed in it's right-click popup menu. There may be one action in the menu which is displayed in bold which means it's a default action. Default action is typically the most useful action for the node and can be invoked immediately by doubleclicking the node or pressing Enter for the selected node. What's this good for? You can easily open an application or Local host using their node, add a new host using the Remote node, add a core dump using the VM Coredumps node or add an application snapshot using the Snapshots node.

Hold down the CTRL key when taking a snapshot to not open it!

By default if you take some kind of snapshot in VisualVM it's immediately opened. Sometimes this is not what you want, maybe you just want to take a heap dump and save it for later investigation. How to suppress the automatic opening of the snapshot? By holding the CTRL key down when invoking the Take Snapshot action. This works for taking the thread dumps, heap dumps, profiler snapshots and application snapshots across the VisualVM UI.


A blog by NetBeans Profiler & VisualVM developers.


« April 2014