Visual VM is a new project whose goal is to provide monitoring and profiling tools for the JVM with a GUI. You may ask - why do we need visual VM when we have NetBeans profiler? Well, in order to use NetBeans profiler you need to use NetBeans - on the contrary Visual VM is a standalone application (based on NetBeans platform :).
So what is the difference between NetBeans profiler and Visual VM? Some parts are very similar - especially the thread, CPU and memory profiling. Visual VM doesn't have some of the advanced features of NetBeans profiler, such as load generation with jMeter and source code related features including profiling points. On the other hand it is a "all-in-one" tool for monitoring and profiling tasks. So it integrates functionality from various command line tools such as jps, jstack, jstat, jmap and jinfo.
When you run Visual VM you can see all running java processes and you can connect to them, take thread dumps, heap dumps, analyze CPU and memory performance. Although Visual VM requires JDK 6 to start you can connect to applications running on 1.4.2 or higher. And you can also connect to remote hosts and perform remote profiling.
Visual VM also shares the NetBeans plug-in architecture, so you can create plug-ins for Visual VM like if they were NetBeans plug-ins. Right now you can install an MBeans browser plug-in and a visual GC plug-in.