VisualVM-BTrace

VisualVM是一个非常神奇的性能检测工具;从官网下载完毕之后,先不要急着使用,因为VisualVM是需要插件才能够使用的,Tools->Plugins可以选定插件进行在线安装,但是有的时候因为网络原因,下载过程发生异常(笔者就遇到这种情况),可以从下面的网址来获取离线安装包(需要逐个点一下,或者采用迅雷的全部下载链接?);可以在Plugins界面的“downloads”标签页中通过“add Plugins...”按钮来导入安装包进行安装。

http://services.netbeans.org/uc/show_uc_content.php?ucurl=http://bits.netbeans.org/VisualVM/uc/8u40/updates.xml

这里介绍一下Visual里面的神奇功能:BTrace,可以通过BTrace来跟踪一下执行jar包的变量,输入变量值,这个在无法调试的环境下(比如生产环境)超级有用。

package com.learnworld;

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

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

	public static void main(String[] args) throws Exception{
		BTraceTest test = new BTraceTest();
		BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
		for(int i = 0; i< 10; 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));
		}
	}
}

打成jar包后,通过命令行java -jar BTraceTest.jar

然后使用VVM打开,就可以看到VVM已经探测到了这个jar包,然后在vvm左侧Applications栏,右键这个应用,选择“Trace Application...”

/* BTrace Script Template */
import com.sun.btrace.annotations.*;
import static com.sun.btrace.BTraceUtils.*;

@BTrace
public class TracingScript {
	@OnMethod(clazz="com.learnworld.BTraceTest",method="add",[email protected](Kind.RETURN))
    public static void func(int a, int b, @Return int result){
        println("调用堆栈:");

	    jstack();
	    println(strcat("方法参数A:", str(a)));
	    println(strcat("方法参数B:", str(b)));
	    println(strcat("方法结果:", str(result)));
	}
}

在命令窗口随便输入些什么,即可看到BTrace下面的output将会输出指定的变量:

a是测试用的,返回了1261,之后启动了BTrace,可以看到有一行“btrace DEBUG...”,就是进入了可调式状态。输入100(随便输入),返回1339,再看一下vvm:

将会把调用堆栈(指定的add方法的堆栈)输出,然后把参数都打印出来。

时间: 2024-08-07 17:02:29

VisualVM-BTrace的相关文章

jvm内存溢出性能调优

常用工具及命令 jps jstat Top jstack jmap mat工具 top -Hp pid可以查看某个进程的线程信息 -H 显示线程信息,-p指定pid jps:可以列出正在运行的虚拟机进程,并显示虚拟机执行主类名称及进程pid 如:jps -l pid Jstack命令 jstack是java虚拟机自带的一种堆栈跟踪工具.用于生成java虚拟机当前时刻的线程快照.线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,

VisualVM初次使用BTrace功能方法步骤

前提安装好了VisualVM,并且安装了插件BTrace(期间出现了一个小问题,那就是标签里面怎么找不到BTrace标签,后面经过实践在VisualVM的application里找到要调试的进程,然后通过右击那个进程即可找到BeTrace这个标签,来进行coding) 1.我这在esclipse里面的演示demo coding如下: 1 /** 2 * 3 */ 4 /** 5 * @author Administrator 6 * 7 */ 8 package com.lyq.demo; 9

BTrace注解详细介绍

BTrace(https://btrace.dev.java.net/) 是一个非常不错的java诊断工具, 最近试着用了一下, 文档比较少, 主要是看例子吧. BTrace 中的B表示bytecode, 表明它是在字节码层面上对代码进行trace 用来在运行中的java类中注入trace代码, 并对运行中的目标程序进行热交换(hotswap) btrace还提供了VisualVM Plugin 以及Netbeans Plugin 术语 Probe Point 在何处执行trace语句, 这里的

BTrace工具简介

What is Btrace? Java进程诊断分析工具 安全的工具 无侵入性 不修改应用任何应用数据 限制跟踪行为,没能有循环 依赖组件 使用OjbectWeb ASM组件来完成字节码层面上的跟踪分析 开源组件 项目主页:http://btrace.dev.java.net GPLv2 + CLASSPATH Exception VisualVM 插件和开发时插件 BTrace应用较为广泛的原因应该是其安全性和无侵入性,已经热交互技术,使得我们无需启动Agent的情况下动态跟踪分析,其安全性不

Java BTrace实战(1)--BTrace的入门和使用

前言: 对线上的java服务, 往往采用日志进行问题处理和分析. 倘若日志缺乏相关的信息时, 那又该如何处理? 远程调试会影响服务的正常工作, 修改代码重新部署的方案其实时性和灵活性难以保证(线上服务的流程繁琐, 问题追踪的不确定性), 有没有两全的完美方案(不影响正常服务, 又灵活/无侵入性)呢? 答案是有, 它就是人见人爱, 花见花开的神器BTrace. 那BTrace究竟是这么样的神器, 为何它只要998(啊呸..., -_-bbb). 好了, 让我们一步一步的掀起它的红盖头来. 本系列讲

JVM探秘:VisualVM监控远程Java进程

VisualVM在Java 8中是JDK自带的一个图形化工具,项目主页 VisualVM,在后续版本中可能会从JDK移除. VisualVM可以监控Java进程的CPU与内存占用情况,可以监控Java进程内的各个线程的执行情况,还可以与MAT工具一样用来分析堆转储快照. 监控远程Tomcat进程 监控远程主机上的Tomcat进程,需要在Tomcat的catalina.sh文件中加入参数: JAVA_OPTS="$JAVA_OPTS -Dcom.sum.management.jmxremote -

Java程序性能分析工具Java VisualVM(Visual GC)—程序员必备利器

VisualVM 是一款免费的\集成了多个JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优.这些功能包括生成和分析海量数据.跟踪内存泄漏.监控垃圾回收器.执行内存和 CPU 分析,同时它还支持在 MBeans 上进行浏览和操作. 在内存分析上,Java VisualVM的最大好处是可通过安装Visual GC插件来分析GC(Gabage Collection)趋势.内存消耗详细状况. 一  Visual GC(监控垃圾回收器) Java Visu

生产环境中系统调试--BTrace

BTrace是sun公司推出的一款Java 动态.安全追踪(监控)工具,可以在不用重启的情况下监控系统运行情况,方便的获取程序运行时的数据信息,如方法参数.返回值.全局变量和堆栈信息等,并且做到最少的侵入,占用最少的系统资源. 由于Btrace会把脚本逻辑直接侵入到运行的代码中,所以在使用上做很多限制:1.不能创建对象2.不能使用数组3.不能抛出或捕获异常4.不能使用循环5.不能使用synchronized关键字6.属性和方法必须使用static修饰 根据官方声明,不恰当的使用BTrace可能导

Java VisualVM 插件地址

打开Java VisualVM检查更新插件时,默认的连接连不上,通过浏览器访问之后发现默认的服务器已经404,新地址已经迁移到github,下面这个地址里面有不同版本jdk对应的插件中心地址. https://visualvm.github.io/pluginscenters.html

使用jdk自带的visualVM监控远程监控was

1.登录was控制台https://172.16.87.221:9043/ibm/console/unsecureLogon.jsp 服务器--服务器类型--Java 和进程管理---进程定义---Java 虚拟机 通用JVM参数:-Djavax.management.builder.initial= -Dcom.sun.management.jmxremote 2.修改/opt/IBM/WebSphere/AppServer/java/jre/lib/management/management