zoukankan      html  css  js  c++  java
  • javaagent

    -javaagent:<jarpath>[=<options>]
    load Java programming language agent, see java.lang.instrument
    代理 (agent) 是在你的main方法前的一个拦截器 (interceptor),也就是在main方法执行之前,执行agent的代码。
    agent的代码与你的main方法在同一个JVM中运行,并被同一个system classloader装载,被同一的安全策略 (security policy) 和上下文 (context) 所管理。
    例如:java -javaagent:myagent.jar=mode=test Test 指定我们编写的 agent 的 jar 路径(./myagent.jar),以及要传给 agent 的参数(mode=test),在启动的时候这个 agent 就可以做一些我们希望的事:
    可以在加载 class 文件之前做拦截,对字节码做修改
    可以在运行期对已加载类的字节码做变更
    获取所有已经加载过的类
    获取所有已经初始化过的类(执行过 clinit 方法,是上面的一个子集)
    获取某个对象的大小
    将某个 jar 加入到 bootstrap classpath 里作为高优先级被 bootstrapClassloader 加载
    将某个 jar 加入到 classpath 里供 AppClassloard 去加载
    设置某些 native 方法的前缀,主要在查找 native 方法的时候做规则匹配。

    在一个java应用中,-javaagent这个参数的个数是不限的,你可以指定多个javaagent,所有的javaagent会按顺序执行,执行完各个agent之后,再执行main方法,放在main方法之后的premain方法是不会被执行的。比如
    set JAVA_OPTS=%JAVA_OPTS% -javaagent:D:/tools/myagent1.jar -javaagent:D:/tools/myagent2.jar -javaagent:D:/tools/myagent3.jar Test
    执行顺序就是:myagent1.premain -> myagent2.premain -> myagent.premain ->Test.main
  • 相关阅读:
    EL表达式与JSTL
    JSP
    session
    四则运算 第二次
    第二次作业
    四则运算
    用户使用手册与测试报告
    系统设计和任务分配
    需求规格说明书和原型设计
    用户需求分析和竞品分析
  • 原文地址:https://www.cnblogs.com/doit8791/p/11993184.html
Copyright © 2011-2022 走看看