利用jvisualvm使用btrace进行线上调试案例

用途:btrace主要用于线上调试。通过btrace,可在不改动代码的前提下,方便的发现以下问题:

1.定位性能慢的接口服务;

2.实时打印堆栈信息,定位死锁位置;

3.定位占用大量内存空间的代码块;

4.打印处理流程中的入参、出参信息;

 

注意事项

一.

  • 不能创建新的对象。
  • 不能创造新的阵列。
  • 不能抛出异常。
  • 不能捕捉异常。
  • 不能让任意实例或静态方法调用-只有public static方法的com.sun.btrace.BTraceUtils 类可以从BTrace程序调用。
  • 不能分配到目标程序的类和对象的静态或实例字段。但是,BTrace类可以分配给它自己的静态字段(“跟踪状态”可以变异)。
  • 不能有实例字段和方法。static public voidBTrace类只允许返回方法。所有领域都必须是静态的。
  • 不可以具有外,内,嵌套的或局部类。
  • 不可以具有同步块或同步方法。
  • 不能有环(for, while, do..while
  • 不可以延伸任意类(超类必须java.lang.Object中)
  • 不可以实现接口。
  • 不可以包含断言语句。
  • 不可以使用类文字。

二.

BTrace植入过的代码,会一直在,直到应用重启为止。所以即使Btrace退出了,业务函数每次执行时都会执行Btrace植入的代码
BTrace植入过的代码,会一直在,直到应用重启为止。所以即使Btrace退出了,业务函数每次执行时都会执行Btrace植入的代码
BTrace植入过的代码,会一直在,直到应用重启为止。所以即使Btrace退出了,业务函数每次执行时都会执行Btrace植入的代码

 

安装使用

1.安装JDK,配置JDK的环境变量;

 

2.在JDK的安装路径上,打开jvisualvm.exe

 

 

3.选择“工具”-“插件”-“可用插件”。

 

注意:在第三步,可能有的机器会报错:

解决方法:https://blog.csdn.net/xionglangs/article/details/77603343

 

4.勾选“BTrace”进行安装

 

5.安装完成后,即可进行本地代码的开发、调试。

如果需要远程调试,需要在服务器端启动tomcat的时候,在jvm参数加上jmx的配置信息({ip},{port}分别替换为具体的ip地址和端口号):

-Djava.rmi.server.hostname={ip} -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port={port} -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -jar

 

6.编辑btrace脚本

6.1 在需要进行调试的程序(pid)上,右键选择“trace application”

 

6.2编写脚本

这个脚本的意思是:在方法返回时候,打印入参和出参,并且打印该方法的名称和方法执行耗费时间。

 

6.3运行脚本效果

 

btrace官方教程:

https://github.com/btraceio/btrace/blob/master/docs/usersguide.html

posted on 2018-11-26 15:30 落烨无痕 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/danny-djy/p/10020575.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
jvisualvm是一个GUI工具,用于监视Java虚拟机的性能和内存使用情况,以下是使用jvisualvm的步骤: 1. 打开jvisualvm工具:在JDK安装目录下的bin文件夹中找到jvisualvm.exe并打开。 2. 连接到正在运行的Java应用程序:在jvisualvm主界面的左侧面板中,在“本地”或“远程”标签页中找到正在运行的Java应用程序,然后双击它。 3. 查看应用程序的运行状况:在jvisualvm的右侧面板中,可以查看应用程序的运行状况,包括CPU使用率、内存使用率、线程数等。 4. 分析内存使用情况:在jvisualvm的右侧面板中,选择“内存”选项卡,可以查看应用程序的内存使用情况,包括堆内存和非堆内存的使用情况、对象数量等。 5. 分析线使用情况:在jvisualvm的右侧面板中,选择“线程”选项卡,可以查看应用程序的线使用情况,包括线程数、线程状态等。 6. 分析类加载情况:在jvisualvm的右侧面板中,选择“类”选项卡,可以查看应用程序的类加载情况,包括已加载类的数量、加载类的时间等。 7. 分析垃圾回收情况:在jvisualvm的右侧面板中,选择“垃圾回收器”选项卡,可以查看应用程序的垃圾回收情况,包括垃圾回收器的类型、回收时间等。 总之,使用jvisualvm可以方便地监视Java应用程序的性能和内存使用情况,帮助我们分析和解决应用程序的性能问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值