Visual VM is an open-source Java tool that provides visual monitoring and feedback on running Java applications.
Based on the NetBeans platform, VisualVM uses a variety of techniques to connect to a running Java VM, such as jvmstat, or JXM, and automatically chooses the best connection type based on the monitoring task. Once connected, VisualVM collects a wealth of performance-related metrics for applications running on the Java VM. Monitoring can be performed on a local or remote JVM. Although VisualVM itself requires a Java 6 VM, it can monitor and report on applications written for earlier Java versions as well.
Data collected by VisualVM can be saved for analysis later. As a result, while VisualVM can serve as feature-rich profiler and debugger, it is also useful for end-users capturing and submitting defect reports.
VisualVM can also be extended via the NetBeans plug-in mechanism. The recently released VisualVM 1.2 features a new Sampling CPU and Memory Profiler plugin. As with other data, VisualVM displays such information in visually reach charts and tables. The new 1.2 version sports improved visual display with tooltips, and also defines a public charting API for third-party plugins. Additional VisualVM 1.2 features include:
Application Snapshots can be opened using the Load action or --openfile parameter
Enhanced JMX API to enable customizing JMX environment/connections by 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
VisualVM also provides integration with several IDEs, including Eclipse and NetBeans.
What do you think of VisualVM as a Java application monitoring tool?