gpt4 book ai didi

java - Java Attach API 的限制和范围

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:29:51 24 4
gpt4 key购买 nike

据我了解,Java 6 中引入的 Attach API 允许通过代理对目标 JVM 中运行的类进行进程间修改。我的问题是:

  1. 此策略是否仅限于检测尚未被目标 JVM 加载的类?和
  2. 这些转换的限制是什么?例如,只能修改现有方法的主体?还是可以更改类定义中的所有内容?

最佳答案

  1. 您可以通过使用 ClassFileTransformer 拦截已加载或待加载的类来检测它们。但是,如果重新转换的方法具有 Activity 堆栈帧,则这些 Activity 堆栈帧将继续运行原始方法的字节码。重新转换的方法将用于新的调用。
  2. 重新定义/重新转换可能会改变方法体、常量池和属性。重新定义/重新转换不得添加、删除或重命名字段或方法,不得更改方法的签名或更改继承。这些限制可能会在未来的版本中取消。应用转换后才会检查、验证和安装类文件字节,如果生成的字节有误,此方法将抛出异常。

Instrumentation 的 javadoc界面包含您询问的大部分信息。

关于java - Java Attach API 的限制和范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15744315/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com