|
Instrumentation
|
java.lang.instrument
|
This interface is the main entry point to the
java.lang.instrument
API. A Java instrumentation agent specified on the Java interpreter command line with the
-javaagent
argument must be a class that defines the following method:
public static void premain(String args, Instrumentation instr)
The Java interpreter invokes the
premain( )
method during startup before calling the
main( )
method of the program. Any arguments specified with the
-javaagent
command line are passed in the first
premain( )
argument, and an
Instrumentation
object is passed as the second argument.
The most powerful feature of the
Instrumentation
object is the ability to register
ClassFileTransformer
objects to augment or rewrite the byte code of Java class files as they are loaded into the interpreter. If
isRedefineClassesSupported( )
returns
true
, you can also redefine already-loaded classes on the fly with
redefineClasses( )
.
getAllLoadedClasses( )
returns an array of all classes loaded into the VM, and
getInitiatedClasses( )
returns an array of classes loaded by a specified
ClassLoader
.
getObjectSize( )
returns an implementation-specific
approximation
of the amount of memory required by a specified object.
public interface
Instrumentation
{
// Public Instance Methods
void
addTransformer
(ClassFileTransformer
transformer
);
Class[ ]
getAllLoadedClasses
( );
Class[ ]
getInitiatedClasses
(ClassLoader
loader
);
long
getObjectSize
(Object
objectToSize
);
boolean
isRedefineClassesSupported
( );
void
redefineClasses
(ClassDefinition[ ]
definitions
) throws ClassNotFoundException,
UnmodifiableClassException;
boolean
removeTransformer
(ClassFileTransformer
transformer
);
}
|