Question

Basic question: JVM provides JVMTI which native API for profiling and debugging JVM. JVM instrumentation also does the same (is that correct?). If yes, what is difference between the both?

Was it helpful?

Solution

I dont think that Instrumentation is JVMTI is Superset of Instrumentation.. as Both of these can be used independently.

JVMTI is based on events and in the event handlers we can capture required information about the JVM.

Instrumentation is Something in which we modify the Bytecode and hence in turn add extra piece of code at runtime at required location in the class before it loads in the JVM. this extra piece of code when executed, will help gather required information for the profiler.

Instrumentation can be achieved with the help of various third party jar's like ASM.

As per my knowledge and experience Both of these are for Java profiling and not for Native profiling.

Probably need to read more documents and tryout different samples for better understanding.

OTHER TIPS

JVMTI gives all the functionality the debugger needs, however if you want to more than what the JVMTI provides you need to use Instrumentation.

JVMTI is base functionality that provides all sorts of events for debugging, profiling, etc... One of the areas it provides is access to intercept (and redefine) classes. java.lang.instrument is a Java wrapper on top of JVMTI that provides a nice, easy, accessible way of getting at the class loading events.

Think of JVMTI as a pure superset of java.lang.instrument, but requires the user to write C code.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top