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
  • 相关阅读:
    关于 setColorFilter 和 PorterDuff.Mode
    下拉刷新 SwipRefreshLayout
    from athletelist import AthleteList出现红色下滑波浪线警告
    IndentationError: unindent does not match any outer indentation level
    定制数据对象2
    定制数据对象
    数据处理02
    数据处理
    python 工具箱
    嵌套列表的格式打印
  • 原文地址:https://www.cnblogs.com/doit8791/p/11993184.html
Copyright © 2011-2022 走看看