Short answer
Command-line JDK tools: jstack (thread dumps / deadlocks), jmap (heap dumps, histograms), jstat (live GC/heap stats), and jcmd (the modern Swiss-army entry point for dumps, JFR control, and diagnostics).
Explanation
For low-overhead production profiling, Java Flight Recorder (JFR) analyzed in JDK Mission Control, and async-profiler for CPU/allocation flame graphs. GUI/monitoring: VisualVM for live inspection, and Eclipse MAT for offline heap-dump analysis. In production these are backed by APMs (Datadog, New Relic) and Micrometer/Prometheus/Grafana dashboards over JMX metrics.
Common mistakes
- Naming tools without saying what each is for.
- Not mentioning JFR and async-profiler.