JVM调优(三)——基于Btrace的监控调试
2024-10-07 14:16:13
JVM调优(三)——基于Btrace的监控调试
简介
- Btrace可以动态地向目标应用程序的字节码注入追踪代码
- 用到的技术: JavaComplierApi、JVMTI、Agent、Instrumentation+ASM
Btrace安装入门
通过github搜索进行下载
新建环境变量BTRACE_HOME
添加Path:%BTRACE_HOME%\bin
两种运行脚本的方式
- 在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()
- 打印环境变量
使用注意事项
- 默认只能本地运行
- 生产环境可以使用,但是被修改的字节码不会被还原
最新文章
- css3中变形函数(同样是对元素来说的)和元素通过改变自身属性达到动画效果
- 学习使用html与css,并尝试写php
- [Machine-Learning] matlab 矩阵常见基本操作
- tomcat7+jdk1.8一键安装脚本
- express-6 请求和响应对象(1)
- ASP.NET上传大文件的问题
- PHP框架中最喜欢的WindFramework
- IOS常用的系统文件目录介绍
- CDNJS:使用JavaScript CDN加速网站载入速度
- Loadrunner:集合点(Rendezvous)
- 基于python yield机制的异步操作同步化编程模型
- C#中判断空字符串的3种方法性能分析
- C++笔记1: 单例模式。(一个简单的设计模式在C++中复杂出翔。。)
- js循环json得到 键和值
- 分金币 [CQOI 2011] [BZOJ 3293]
- FTP:500 OOPS: failed to open vsftpd log file:/var/log/vsftpd.log
- AOP缓存实现
- 迭代和JDB调试
- JDBC(4)—Preparedstatement
- EasyUI学习总结(五)——EasyUI组件使用
热门文章
- C++中使用CMake编译管理项目
- Python科学计算三维可视化(整理完结)
- linux下shell显示git当前分支
- Synchronized 详解
- TCP协议-流量控制
- P3740 [HAOI2014]贴海报
- 【Linux】php7.2.8 + xdebug + composer + php代码覆盖率 + jenkins配置 (实操记录,亲测可用)
- Mybatis-技术专区-中的条件查询createCriteria example里面的条件
- 安装weblogic中间件_test
- K8S创建的相关yaml文件