Monday Mar 07, 2011
Monday Sep 20, 2010
Monday Jul 26, 2010
By Jiri Sedlacek on Jul 26, 2010
The new version of the VisualVM tool is now available at https://visualvm.dev.java.net. 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 (com.sun.management.HotSpotDiagnostic | 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 https://visualvm.dev.java.net. 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
By Jiri Sedlacek on Jul 09, 2010
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
By Tomas Hurka on Jun 23, 2010
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
By Jiri Sedlacek on Apr 30, 2010
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
By Jiri Sedlacek on Jan 27, 2010
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
Wednesday Jan 06, 2010
By Jiri Sedlacek on Jan 06, 2010
Monday Nov 09, 2009
By Jiri Sedlacek on Nov 09, 2009
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
Wednesday Oct 21, 2009
By Jiri Sedlacek on Oct 21, 2009
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
jstatdconnections 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
Monday Oct 05, 2009
By Jiri Sedlacek on Oct 05, 2009
VisualVM 1.2 Test Build has been released at https://visualvm.dev.java.net. 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 firstname.lastname@example.org 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
By Jiri Sedlacek on Aug 24, 2009
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 https://visualvm.dev.java.net and Java VisualVM when it's the JDK tool located in the
Thursday Aug 13, 2009
Thursday Jul 23, 2009
By Jiri Sedlacek on Jul 23, 2009
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.
- VisualVM 1.3.2 Released
- VisualVM 1.3.1 Released
- VisualVM 1.3 Released
- JDK 6 Update 21 Includes VisualVM 1.2.2
- NetBeans IDE 6.9 Released
- Problems Adding Remote Hosts in VisualVM on Linux/Solaris
- Oracle Plans for NetBeans IDE
- JDK 6 Update 18 Includes VisualVM 1.2.1
- VisualVM 1.2.2 Released
- VisualVM 1.2.1 Released