For production systems I use flight recordings (jfrs). To analyze I use java mission control.
For OOME problems I use a heap dump and eclipse memory analysis tool.
For microbenchmarks, I use JMH. But I tend to try and avoid doing those.