• JVM调优(三)——基于Btrace的监控调试


    JVM调优(三)——基于Btrace的监控调试

    简介

    • Btrace可以动态地向目标应用程序的字节码注入追踪代码
    • 用到的技术: JavaComplierApi、JVMTI、Agent、Instrumentation+ASM

    Btrace安装入门

    • 通过github搜索进行下载

    • 新建环境变量BTRACE_HOME

    • 添加Path:%BTRACE_HOME%in

    两种运行脚本的方式

    • 在JVisualVM中添加Btrace插件,添加classpath
    • 使用命令行btracce <pid> <trace_script>

    Btrace使用详解

    拦截方法

    • 普通方法

      @OnMethod(clazz="",method="")
      
    • 构造函数

      @OnMethod(clazz="",method="<init>")
      
    • 拦截同名函数,用参数区分

    拦截时机

    • Kind.ENTRY:入口,默认值
    • Kind.RETURN:返回
    • Kind.THROW:异常
    • Kind.Line:行

    拦截this,参数,返回值

    • this:

      @Self
      
    • 入参:可以用AnyType,也可以用真实类型,同名的用真实的

    • 返回:@Return

      • 简单类型:直接获取
      • 复杂类型:反射,类名+属性名

    其他

    • 打印行号:Kind.LINE
    • 打印堆栈:Thread.jstack()
    • 打印环境变量

    使用注意事项

    • 默认只能本地运行
    • 生产环境可以使用,但是被修改的字节码不会被还原
  • 相关阅读:
    7. Reverse Integer
    2. Add Two Numbers
    1039. 顺序存储二叉树
    Codeforces 535D
    Codeforces 385D
    URAL
    URAL
    Codeforces Round #428 (Div. 2)
    鹰蛋坚硬度实验
    Codeforces Round #392 (Div. 2)-D. Ability To Convert
  • 原文地址:https://www.cnblogs.com/xujie09/p/11694262.html
Copyright © 2020-2023  润新知