Whats the difference between dynamic and full instrumentation?
Full instrumentation means that each and every method call that is made in the JVM is reported to the JProfiler agent library for separate measurement. Because usually the majority of all classes is filtered to hide the inner workings of external APIs, the vast majority of these measurements is unnecessary, especially for J2EE applications running in large application servers. Because enabling full instrumentation makes JVMs quite slow (especially hotspot VMs), ej-technologies has developed the concept of dynamic instrumentation. Dynamic instrumentation works by instrumenting Java bytecode on the fly as the JVM loads classes from external storage. The raw class files are intercepted by JProfiler’s native agent library before the JVM parses them. Appropriate bytecode instructions for profiling are added at the beginning and the end of each method as well as around calls into filtered packages. The bytecode modification is done with a C++-port of jclasslib.