Java VisualVM使用

VisualVM不再集成于OracleJDK9及以上版本,需要单独下载。本文介绍了如何下载并配置VisualVM,以及如何使用它来生成和浏览堆转储快照,特别是通过BTrace进行动态代码跟踪,实现在不中断服务的情况下排查异常数据。
摘要由CSDN通过智能技术生成

注意:
VisualVM has also been distributed in Oracle JDK 6~8 as Java VisualVM. It has been discontinued in Oracle JDK 9. See the Upgrading Java VisualVM page to learn how to upgrade to the latest VisualVM.
原来从jdk 9开始, visualVM不再集成在Oracle JDK中, 需要单独下载安装
下载地址: https://visualvm.github.io/download.html
下载之后,解压到JDK目录下,层级对应覆盖即可。然后在如图位置进行配置。(如果setting中没有图中的设置,请到plugins中下载"VisualVM Launcher"插件)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可视化简直太棒了

使用

一.生成、浏览堆转储快照

在这里插入图片描述
在这里插入图片描述

生成对应的堆转储文件
在这里插入图片描述
通过左侧列表可以查看到当前堆转储文件节点,并且可以进行相应的保存等操作,同时可以通过File菜单中load进行已保存的堆转储文件的加载

二.Btrace使用
示例代码

package com.good.test;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Demo2 {
    public int add(int a, int b) {
        return a + b;
    }

    public static void main(String[] args) throws IOException, InterruptedException {
        Demo2 test = new Demo2();
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        for (int i = 0; i < 10000; i++) {
            reader.readLine();
            int a = (int) Math.round(Math.random() * 1000);
            int b = (int) Math.round(Math.random() * 1000);
            System.out.println(test.add(a, b));
        }
    }
}
可以在idea中以VisualVM方式运行
找到对应进程节点,右键打开Tracce Application然后进行代码插入编写
/* BTrace Script Template */
import org.openjdk.btrace.core.annotations.*;
import static org.openjdk.btrace.core.BTraceUtils.*;

@BTrace
public class TracingScript {

/* put your code here */
@OnMethod(clazz="com.good.test.Demo2", method="add", location=@Location(Kind.RETURN))

public static void func(@Self com.good.test.Demo2 instance,int a, int b,@Return int result) {
     println("调用堆栈:"); 
     jstack();
     println(strcat("方法参数A:",str(a)));
     println(strcat("方法参数B:",str(b)));
      println(strcat("方法结果:",str(result)));
 }
}

在这里插入图片描述
点击start后可以通过不断输入字符回车发现我们插入的日志已经显示出来了
这个场景非常适用不用停止服务器进行异常数据排查

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值