读书人

JavaRebel 关于 noverify 跟 javaagen

发布时间: 2012-10-31 14:37:32 作者: rapoo

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

 method: test signature: ()I) Accessing value from uninitialized register 2
Could not find the main class: testverify.TestVerify. Program will exit.

执行:java -noverify testverify.TestVerify
结果:1


读书人网 >编程

热点推荐