VisualVM

VisualVM is a tool that provides a visual interface for viewing detailed information about Java applications while they are running on a Java Virtual Machine (JVM). VisualVM organizes JVM data that is retrieved by the Java Development Kit (JDK) tools and presents the information in a way that allows data on multiple Java applications to be quickly viewed—both local applications and applications that are running on remote hosts. Programmers can also capture data about the JVM software and save the data to the local system, and then view the data later or share it with others. VisualVM is built on the NetBeans Platform; its architecture is modular and easy to extend with plugins.

This tool was bundled directly with JDK 6 through JDK 8. VisualVM is actively developed.

Features
VisualVM has features of use to application developers, system administrators, quality engineers and application users submitting bug reports.
 * Display local and remote Java applications.
 * Display application configuration and runtime environment.
 * Monitor application memory consumption and runtime behavior.
 * Monitor application threads.
 * Profile application performance or analyze memory allocation.
 * Take and display thread dumps.
 * Take and browse heap dumps.
 * Analyze core dumps and applications offline.
 * Browse JFR recordings.