非常强烈的推荐下BTrace这个工具,用了后不得不说太强大了,BTrace简单来说,就是能在不改动当前程序的情况下,运行时的去监控Java程序的执行状况,例如可以做到内存状况的监控、方法调用的监控等等,官方网站上有非常多详细的例子,我不说太多,只在下面举一个简单的例子来说明它的作用,BTrace的User Guide请见:http://kenai.com/projects/btrace/pages/UserGuide。
对于运行中的Java程序,尤其是出了问题的程序,会需要跟踪其执行状况,例如传入的参数是什么、执行了多少时间,返回的对象是什么,抛出了什么异常,传统的做法只能是把程序改一遍,加上一堆log,一个例子来展示下用BTrace的情况下,怎么来跟踪一个方法的执行时间:
@BTrace public class MethodResponseTime {
@TLS private static long startTime;
@OnMethod(clazz="类名",method="方法名")
public static void onCall(){
println("enter this method");
startTime=timeMillis();
}
@OnMethod(clazz="类名",method="方法名",location=@Location(Kind.RETURN))
public static void onReturn(){
println("method end!");
println(strcat("Time taken ms",str(timeMillis()-startTime)));
}
}
@TLS private static long startTime;
@OnMethod(clazz="类名",method="方法名")
public static void onCall(){
println("enter this method");
startTime=timeMillis();
}
@OnMethod(clazz="类名",method="方法名",location=@Location(Kind.RETURN))
public static void onReturn(){
println("method end!");
println(strcat("Time taken ms",str(timeMillis()-startTime)));
}
}
用btrace执行上面的代码,就可以动态的监控任意的目前运行的Java程序中某类的某方法的执行时间,执行上面代码的方式如下(jdk 6+):
btrace [pid] MethodResponseTime.class
还有例如获取调用参数、调用者的对象实例以及返回值等请参看User Guide。
btrace为了保持JVM运行的安全性,因此做了很多的限制,例如不能抛出异常、修改传入的参数的值、修改返回值等,基本是一个只读的动态分析代码运行状况的工具,但仍然是非常的有用,其实现机制是attach api + asm + instrumentation。
下载地址:https://kenai.com/projects/btrace/downloads/directory/releases/release-1.2.3
相关推荐
标题中的"BTrace"是一个专为Java平台设计的安全、动态的跟踪工具,它的主要功能是对正在运行的Java应用程序进行实时监控和诊断。BTrace利用了字节码注入的技术,能够在不修改原有代码的情况下,动态地向目标应用添加...
Btrace 提供了一种灵活的方法来追踪代码执行,而无需修改源代码或重新部署应用程序。这个工具的核心理念是利用 Java 代理技术(Java Agent),它允许在运行时对目标应用注入监控代码,而不影响其正常运行。 Btrace ...
它以其无需修改代码、动态跟踪代码执行的能力而备受开发者青睐。本文将围绕“btrace-bin-1.3.11.tgz.tar.gz”这一最新版本的BTrace bin包,探讨其主要组件、使用方法以及相关知识点。 首先,我们看到压缩包内包含了...
1. **BTrace简介**:BTrace是一个动态代码插桩工具,它允许开发者在运行时添加和修改Java代码,以便进行性能监控、日志记录、问题诊断等。BTrace使用安全的字节码注入技术,确保不会破坏程序的正常运行。 2. **工作...
Btrace 是一个强大的Java应用程序动态跟踪工具,它允许开发者在不修改代码的情况下,对正在运行的应用程序进行实时监控和诊断。这个资源包包含了Btrace的多个组件,下面我们将逐一介绍。 1. **btracec.bat 和 ...
Btrace就是这样一款强大的工具,它允许开发者在不重启Java应用的情况下,动态地添加探查代码(probe),从而跟踪并理解程序的运行状态。 **Btrace简介** Btrace是由Sun Microsystems开发的一个开放源码的Java运行时...
它的核心特性在于能够在不中断程序运行的情况下,动态插入代码进行跟踪和分析,这对于理解复杂的系统行为和定位问题非常有帮助。本安装包包含的是BTrace的1.3.9版本,适用于Linux和Windows操作系统。 1. **BTrace...
在Java开发领域,性能优化是不可或缺的一环,而BTrace作为一个强大的动态跟踪工具,可以帮助开发者实时监控和分析应用程序的行为。本文将详细介绍如何在jVisualVM上进行BTrace插件的离线安装,以便在无法在线安装的...
BTrace是一款强大的动态代码跟踪工具,它允许我们在运行时无侵入地添加监控代码,以收集应用程序的关键信息。 首先,我们需要理解BTrace的工作原理。BTrace基于Java的字节码注入技术,可以在不修改源代码的情况下,...
Btrace提供了一种动态跟踪Java应用程序的方法,可以在不中断服务的情况下,对代码执行路径进行监控和分析。这包括追踪方法调用、检测变量变化、记录日志等,从而快速定位代码中的性能瓶颈或者错误。由于它不依赖于...
BTrace是一款强大的Java应用程序动态跟踪工具,它允许开发者在不修改源代码或重新启动应用的情况下,对正在运行的Java应用程序进行实时的性能分析和诊断。这款工具的核心在于其字节码注入技术,它能够动态地在类的...
本文将介绍两款强大的Java在线问题排查工具——Btrace和Greys,它们能够帮助开发者在不重启服务的情况下,实时地跟踪和分析代码执行情况。 1. Btrace 是一个开源的Java诊断工具,它利用了Java的Instrumentation API...
Btrace作为一个强大的Java应用监控工具,通过动态字节码注入技术,让我们无需修改代码就能实现运行时监控。结合VisualVM插件,我们可以更直观地管理和分析监控数据,这对于调试、性能优化以及问题排查具有极大的价值...
BTrace 是一个强大的、安全的、动态的Java应用程序诊断工具,由Sun Microsystems(现已被Oracle收购)开发。它允许开发者在运行时对应用程序进行探查,而无需修改源代码或重启服务。BTrace 使用Java Agent技术,通过...
BTrace,一个强大的Java诊断工具,其主要功能是在线无侵入地对生产环境中的Java应用程序进行动态跟踪和性能分析。它的实现原理主要依赖于四个核心组件:Java Agent、ASM、Java Instrument API以及Java Compiler API...
非侵入式意味着Btrace可以在不修改或重新编译原始Java代码的情况下,对运行中的Java应用程序进行调试,这在生产环境中特别有用,因为重新编译和部署可能会影响服务的稳定性和连续性。 描述进一步强调了Btrace的核心...
BTrace,全称为"Berkeley Trace",是一款强大的、动态的、安全的Java生产环境诊断工具。它允许开发者在运行时对Java应用程序进行性能分析和故障排查,而无需修改或重启应用。BTrace通过其独特的字节码注入技术,为...
BTrace(Bytecode Tracing)是Oracle公司开发的一款强大的动态代码插桩工具,利用Java的Attach API以及Hotswap技术,能够在不中断应用程序运行的情况下,实时地插入自定义的监控代码。这使得开发者可以在不修改源...
3. 不是所有的Java代码都适合在BTrace中执行,因为它主要设计用于轻量级的诊断和监控任务。 一旦脚本编写完成并应用到目标应用,BTrace会生成实时的性能数据和诊断信息,这有助于定位和解决性能瓶颈。例如,你可以...
BTrace 是一个强大的动态代码跟踪工具,它允许开发者在运行时对Java应用程序进行安全的、低开销的、无侵入性的性能和行为分析。这个工具的独特之处在于,它不需要修改或重新编译源代码,而是通过向已运行的应用程序...