|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
public interface Instrumentation
此类提供检测 Java 编程语言代码所需的服务。检测是向方法中添加字节码,其目的是获取各种工具所使用的数据。由于更改完全是进行添加,所以这些工具不修改应用程序的状态或行为。此类优秀工具的例子包括镜像代理、分析器、覆盖分析器和事件记录器。
访问 Instrumentation
接口实例的惟一方法是以指示代理类的方式启动 JVM - 请参阅 包规范。Instrumentation
实例被传递给代理类的 premain
方法。如果某个代理程序获得了 Instrumentation
实例,它便可以在任何时间调用该实例上的方法。
方法摘要 | |
---|---|
void |
addTransformer(ClassFileTransformer transformer)
注册提供的转换器。 |
Class[] |
getAllLoadedClasses()
返回当前由 JVM 加载的所有类的数组。 |
Class[] |
getInitiatedClasses(ClassLoader loader)
返回所有类的数组, loader 是类的初始化加载器。 |
long |
getObjectSize(Object objectToSize)
返回指定对象使用的特定于实现的存储量的近似值。 |
boolean |
isRedefineClassesSupported()
返回当前 JVM 配置是否支持类的重定义。 |
void |
redefineClasses(ClassDefinition[] definitions)
使用提供的类文件重定义提供的类集。 |
boolean |
removeTransformer(ClassFileTransformer transformer)
注销提供的转换器。 |
方法详细信息 |
---|
void addTransformer(ClassFileTransformer transformer)
addTransformer
注册的所有转换器始终可以看到类文件。
此方法旨在用于检测,如类规范中所述。
transformer
- 要注册的转换器
NullPointerException
- 如果传递了一个 null
转换器boolean removeTransformer(ClassFileTransformer transformer)
transformer
- 要注销的转换器
NullPointerException
- 如果传递了一个 null
转换器boolean isRedefineClassesSupported()
redefineClasses(java.lang.instrument.ClassDefinition[])
void redefineClasses(ClassDefinition[] definitions) throws ClassNotFoundException, UnmodifiableClassException
如果重定义的方法有活动的堆栈帧,则这些活动的帧会继续运行初始方法的字节码。将在新的调用上使用此重定义的方法。
此方法不会导致任何初始化(除非它发生在自定义 JVM 语义中)。换句话说,重定义类不会导致其初始化程序运行。静态变量的值将保持为该调用之前的值。
重定义类的实例不受影响。
已注册的转换器在应用重定义操作之前将被调用。
该重定义可以更改方法体、常量池和属性。该重定义不能添加、移除或重命名字段或方法、更改方法签名或者更改继承。以后的版本可能会去掉这些限制。
允许零长度 definitions
数组,在这种情况下,此方法不执行任何操作。
如果此方法抛出异常,则不会重定义任何类。
此方法旨在用于检测,如 类规范 中的描述。
definitions
- 要使用相应定义来进行重定义的类的数组
ClassNotFoundException
- 如果找不到指定的类
UnmodifiableClassException
- 如果无法修改指定的类
UnsupportedOperationException
- 如果 JVM 的当前配置不允许重定义(isRedefineClassesSupported()
为 false)或重定义做了不支持的更改
ClassFormatError
- 如果数据不包含有效类
NoClassDefFoundError
- 如果类文件中的名称与类名称不相等
UnsupportedClassVersionError
- 如果类文件版本号不受支持
ClassCircularityError
- 如果新类包含循环
LinkageError
- 如果发生链接错误
NullPointerException
- 如果提供的定义数组或其任何组件为 null
。isRedefineClassesSupported()
,
addTransformer(java.lang.instrument.ClassFileTransformer)
,
ClassFileTransformer
Class[] getAllLoadedClasses()
Class[] getInitiatedClasses(ClassLoader loader)
loader
是类的初始化加载器。如果提供的加载器为 null
,则返回由引导类加载器初始化的类。
loader
- 将返回其初始化类列表的加载器
long getObjectSize(Object objectToSize)
objectToSize
- 需要确定大小的对象
NullPointerException
- 如果提供的 Object 参数为 null
。
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。