JRat is the Java Runtime Analysis Toolkit. Its purpose is to enable developers to better understand the runtime behavior of their Java programs. The term behavior includes, but is not limited to performance profiling.
While JRat is still in beta, without adding code to your application it can...
accumulate timing statistics (a few ways)
create trace logging
track rate methods are called over time
track the response time of methods over time
JRat is design is based on three types of components. Hooks enable an application to be monitored at runtime. Events generated by hooks are sent to the JRat Runtime where processing is delegated to one or more handlers. Handlers produce output files during runtime and at shutdown.