"Instrumenting small amounts of non-critical code is fine, but if you instrument heavily looped code or extensively through the app, the overheads are huge. Java agents that do code instrumentation are verry very careful to be selective about what they instrument, and so should you! JEP 520 gives some nice examples, for example timing every static initializer"