zoukankan      html  css  js  c++  java
  • 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()
    • 打印环境变量

    使用注意事项

    • 默认只能本地运行
    • 生产环境可以使用,但是被修改的字节码不会被还原
  • 相关阅读:
    什么是字典序算法?
    安装使用zookeeper
    用最快速度将0*10范围内的数进行排序
    自定义schema 流程
    dubbo原理
    jvm 线上命令
    如何实现抢红包算法?
    GC Root 对象有哪些
    Jquery动态绑定事件处理函数 bind / on / delegate
    找出数组中的最小值(es5/es6)
  • 原文地址:https://www.cnblogs.com/xujie09/p/11694262.html
Copyright © 2011-2022 走看看