VisualVM is a Java profiling and performance analysis tool. It has a visual interface to analyze detailed information for Java applications running in local and remote environments on JVMs. It integrates and utilizes JDK provided command-line tools like jstack, jconsole, jmap, jstat, and jinfo. These tools are part of the standard JDK distribution. VisualVM is instrumental in solving runtime problems, with features such as heap dump and thread analysis. It helps in identifying application performance and where it stands against the benchmark. It also helps in ensuring optimal memory usage. It further helps in monitoring the garbage collector, profiling CPU usage, analyzing heap data, and tracking memory leaks. The following are the purposes of each of the command-line tools used by VisualVM:
jstack: This tool is used to capture the thread dumps of a Java application
jmap: This tool prints shared object memory maps and heap memory details for a given process
jstat: This tool displays performance statistics for JVMs running the application
jinfo: This tool prints Java configuration information