VisualVM is a free and visual tool that integrates several commandline JDK tools and lightweight profiling capabilities.
Designed for both production and development time use, it further enhances the capability of monitoring and performance analysis for the Java SE platform.
Here are some key features of "VisualVM":
Display local and remote Java applications:
· VisualVM automatically detects and lists locally and remotely running Java applications (jstatd must be running on the remote host). You can also define applications manually by JMX connection. This way you can easily see what Java applications are running on your system or check if a remote J2EE server process is alive.
Display application configuration and runtime environment:
· For each application VisualVM shows basic runtime information: PID, main class, arguments passed to java process, JVM version, JDK home, JVM flags and arguments and system properties.
Monitor application performance and memory consumption:
· VisualVM monitors application CPU usage, GC activity, heap and permanent generation memory, number of loaded classes and running threads. You can easily detect suspicious memory consumption and take an action - invoke garbage collection in the application or take a heap dump and browse the contents of application heap.
Monitor application threads:
· All threads running in a Java process are displayed in a timeline and table. You can track thread activity and uncover inefficient patterns like blocked Event Dispatch Thread or unused worker threads.
Profile application performance or analyze memory allocation:
· VisualVM includes a built-in application profiler which can visualize where most of the time is being spent or which objects consume most of the memory by just one mouse click without any additional configuration.
Take and display thread dumps:
· Taking and displaying a thread dump is as easy as clicking a mouse button. You don't need to deal with the command line at all to determine what's currently happening in the application. Moreover, simultaneous thread dumps of multiple applications can be taken at once to start uncovering distributed deadlocks.
Take and browse heap dumps:
· When you need to browse contents of application memory or uncover a memory leak in your application, you'll find the built-in HeapWalker tool really handy. It can read files written in hprof format and is also able to browse heap dumps created by the JVM on an OutOfMemoryException.
Analyze core dumps:
· When a Java process crashes, a core dump can be generated by the JVM containing important information about application state at the time of the crash. VisualVM is able to display application configuration and runtime environment and to extract thread and heap dumps from the core dump.
Analyze applications offline:
· VisualVM is able to save application configuration and runtime environment together with all taken thread dumps, heap dumps and profiler snaphots into a single application snapshot which can be later processed offline. This is especially useful for bug reports where users can provide a single file containing all the necessary information to identify runtime environment and application state.
What's New in This Release: [ read full changelog ]
Features and enhancements:
· Issue 428: Show CompositeType field descriptions in tooltips
· tracking (hash)map resize events by Tracer-Collections plugin
· Issue 412: Malicious code vulnerability warnings reported by findbugs
· Issue 430: Stack overflow at disconnect of JMX application
· Issue 432: Profiler tab is not available for OpenJDK 7
· Issue 434: java.lang.NoSuchMethodError from Tracer Jvmstat
· NetBeans issue 191297: Profiling fails with 'Redefinition failed with error 62'
· NetBeans issue 194407: Installed Plugin Tab does not show list of plugins installed
· NetBeans issue 195955: [HeapWalker] deadlock in processing of OQL query
· Threads not displayed in Threads Inspector in JDK 7
· Tracer timeline layout oscillates in JDK 7