I've tried VisualVM and JVM Monitor so far, and neither have behaved as I need them to. A short synopsis of my program: I need to measure a fast application with subsecond precision across 5+ threads. By the time I can select "Start Profiling", my application has ended. As a workaround, I put System.in.read()
at the end of my application, but this means that everything from the read onwards is garbage information and skews some of the measurements.
JVM Monitor especially should start automatically profiling on the launch of every application, being embedded into Eclipse.