JavaRebel 关于 noverify 和 javaagent 参数的使用
一般情况下,使用 JavaRebel 时都配置两个 JVM 参数:-noverify 和 -javaagent
一、-javaagent 参数
这个参数是 JDK5 引入的,可以通过 java -h 查看其帮助信息
// 省略
-javaagent:<jarpath>[=<options>]
load Java programming language agent, see java.lang.instrument
// 省略
通过使用 -javaagent 参数,用户可以在执行 main 函数前执行指定 javaagent 包中的特定代码,甚至可以动态的修改替换类中代码。
javaagent 的代码与你的 main 方法在同一个 JVM 中运行,并被同一个 system classloader 装载,被同一的安全策略(security policy) 和上下文(context)所管理。
如何写一个 javaagent 程序呢?实现很简单,只需要在类中实现 premain 接口:
public static void premain(String agentArgs, Instrumentation inst)
例如可以动态将下面方法中的 true 改为 false