`
iamzhongyong
  • 浏览: 804547 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Btrace中的几个关键技术

 
阅读更多

        使用Btrace已经一段时间了,对于原理一直处于比较模糊的状态,最近有时间来进一步看代码,所以打算写一下。

        类似Btrace的工具目前不少,例如housemd,以及很多基于Btrace的扩展。本来考虑搞一个源码分析的,但是发现没那么多经历,万变不离其宗,还是看一下基本的原理吧。

        1、JDK6中的Instrucment (java扩展组件)

        这个似乎JDK5之后提供的一个组件,能够修改Class的信息,但是JDK5的时候需要在进程中添加agent的信息,这样就导致了不是很灵活。无法再不停机的情况下来进行动态的变化。于是JDK6中,通过attach api来是实现了动态添加,无需修改java进程,即可完成操作。

 

        2、Attach API (虚拟机动态连接)

        Attach API 不是 Java 的标准 API,而是 Sun 公司提供的一套扩展 API,用来向目标 JVM ”附着”(Attach)代理工具程序的。有了它,开发者可以方便的监控一个 JVM,运行一个外加的代理程序。 

        Sun JVM Attach API功能上非常简单,仅提供了如下几个功能:

            1、列出当前所有的JVM实例描述

            2、Attach到其中一个JVM上,建立通信管道

            3、让目标JVM加载Agent

 

        3、ASM(字节码处理框架)

        中间有了组件,能够修改字节码文件,但是这个字节码文件谁来修改?如果懂得java的byteCode规则,完全可以自己玩,但是很多人是不懂的。ASM是字节码修改的一个框架,提供了公共的方法来修改字节码,开发人员关注自己的业务逻辑即可。cglib的字节码变化就是使用了ASM这个框架。

 

        4、Annotation(java 注解)

        注解是jdk5之后提供的一个功能,非常方便,BTrace的话,为了减少脚本的编写成本,封装了注解,这样的话,btrace内部来处理注解的逻辑,然后如果使用功能,直接添加一个注解就OK了。

 

            总体流程:

            1、编写Btrace脚本(就是写java代码),使用了其提供的注解,方便快捷;

            2、使用Attach API来连接目标的java进程,运行脚本;

            3、连接了java进程后,装载agent,然后agent里面来通过Instrucment来修改字节码;

            4、字节码的处理,使用了ASM框架;

            这些功能是零散的,Btrace以及其他的工具,是对于这些功能的组合,赞一下当初作者的思路。对于java应用来说,对于系统弱侵入或者不侵入就可以做一些事情,似乎我们非常高兴的。

        

            参考文章:

            https://kenai.com/projects/btrace/sources/hg/show

            http://www.iteye.com/topic/1005918

    ​    ​    ​http://www.infoq.com/cn/article s/java-profiling-with-open-source

 

    ​    ​    ​​http://kenwublog.com/btrace-theory-analysis 

 

0
2
分享到:
评论
1 楼 ivan19861025 2015-09-07  
如果是.java, 还有个编译的功能

相关推荐

    BTrace-一个用于Java平台的安全动态的跟踪工具

    标题中的"BTrace"是一个专为Java平台设计的安全、动态的跟踪工具,它的主要功能是对正在运行的Java应用程序进行实时监控和诊断。BTrace利用了字节码注入的技术,能够在不修改原有代码的情况下,动态地向目标应用添加...

    btrace release-1.2.5.1

    7. docs:这个目录下通常包含BTrace的用户手册、API文档和其他技术文档,是学习和理解BTrace功能和工作原理的关键资源。 8. bin:这个目录存放可执行文件和脚本,如BTrace的命令行工具,用户可以直接运行这些文件来...

    Btrace资源

    当你需要远程连接到一个运行中的Java应用并执行Btrace脚本时,这个JAR文件是必需的。 4. **btrace-agent.jar** Btrace代理JAR文件,它是一个Java代理,可以在目标Java应用启动时附加,实现对应用程序的动态追踪。...

    jvisualvm btrace插件离线安装

    在Java开发领域,性能优化是不可或缺的一环,而BTrace作为一个强大的动态跟踪工具,可以帮助开发者实时监控和分析应用程序的行为。本文将详细介绍如何在jVisualVM上进行BTrace插件的离线安装,以便在无法在线安装的...

    btrace1.3.9

    【标签】"btrace"是这个话题的核心,它是一种开源的Java诊断工具,允许开发者在运行时添加自定义的行为到Java应用程序中,而无需修改源代码。这使得开发者能够实时查看和理解应用程序的内部工作原理,尤其是在解决...

    btrace1.3.9.zip

    2. **btrace-agent-1.3.9.jar**:BTrace代理是实现动态代码插桩的关键组件。它会在应用程序启动时加载,并根据客户端提供的BTrace脚本,在目标类的字节码上进行插入操作。 3. **btrace-boot-1.3.9.jar**:这个文件...

    jdk1.8-Btrace.rar

    【标签】"java 监测插件Btrace"进一步明确了Btrace是Java生态中的一个监控工具。它可以帮助开发者监控和分析Java应用程序的运行状态,包括但不限于内存使用情况、线程活动、类加载以及各种自定义的业务指标。通过...

    btrace源代码

    BTrace的源代码主要分为以下几个关键部分: 1. **BTrace Agent**:这是BTrace的核心组件,它是一个Java代理,可以在运行时加载到目标应用上。BTrace Agent使用Java代理API(java.lang.instrument)来实现字节码级别...

    BTrace监控远程服务器使用实例

    在这个实例中,我们将学习如何使用BTrace来监控远程Linux服务器上的Tomcat应用。 首先,你需要了解的是BTrace的工作原理。BTrace会动态地生成和注入字节码到目标Java类的方法中,以此来添加监控逻辑。这些监控脚本...

    btrace安装包

    随着Java技术的不断进步,BTrace也在持续演进,以适应新的JVM特性和开发需求。虽然现在有一些替代工具如JMX、Java Flight Recorder等,但BTrace因其轻量级、无侵入的特点,仍然在特定场景下具有独特的价值。 7. **...

    btrace workbench

    在Java开发过程中,性能瓶颈的查找和内存泄漏的检测往往是棘手的问题,而BTrace Workbench则能够帮助开发者实时查看方法调用、对象创建、线程活动等关键信息,从而有效地解决这些问题。 【文件名称列表】"8u40" ...

    btrace-release-1.3.11.3.zip

    标题中的 "btrace-release-1.3.11.3.zip" 表明这是一个 Btrace 的特定发布版本,版本号为 1.3.11.3,通常包含已编译的库文件、文档和其他必要的资源。 在 Java 开发中,性能监控是至关重要的,因为这有助于识别和...

    Btrace 官方zip包

    Btrace 是一款强大的Java应用程序诊断工具,它允许开发者在不修改或重启应用的情况下,实时监控和分析运行中的Java程序。这款工具的核心特性在于其无侵入性,对于繁忙的生产环境而言,这意味着可以在不影响系统正常...

    BTrace自我总结测试代码

    BTrace 使用Java Agent技术,通过字节码注入来跟踪和收集应用中的各种信息,如方法调用、对象创建等。在这个自我学习测试代码中,我们主要关注了如何监控`List`对象参数和自定义对象的参数。 1. **BTrace 的基本...

    bTrace跟踪线程堆栈

    标题 "bTrace跟踪线程堆栈" 涉及到的是在Java开发中对线程堆栈进行监控和分析的技术,主要使用了开源工具bTrace。bTrace是一款强大的、无侵入式的Java运行时代码注入工具,允许开发者在运行中的Java应用上动态添加...

    BTrace实现原理

    BTrace,一个强大的Java诊断工具,其主要功能是在线无侵入地对生产环境中的Java应用程序进行动态跟踪和性能分析。它的实现原理主要依赖于四个核心组件:Java Agent、ASM、Java Instrument API以及Java Compiler API...

    BTrace测试

    BTrace的全称是"Berkeley Trace",它基于字节码注入技术,可以实时地、安全地在运行中的Java应用程序上添加监控脚本,帮助我们理解程序的运行状态,定位问题,优化性能。 BTrace的工作原理主要是通过ASM库来动态...

    btrace.jar

    btrace的工作原理基于Java代理(Java Agent)技术,它可以通过字节码注入的方式,在运行时对目标Java应用进行监控。开发者可以编写BTrace脚本,这些脚本类似于简单的Java代码,用来定义需要监控的事件或行为。一旦...

    btrace引导文件安装Btrace

    Btrace利用Java代理(Java Agents)技术,在运行时对目标应用进行安全、非侵入式的监控,提供了一种高效且灵活的方式来收集程序执行过程中的各种信息。 **Btrace 的工作原理** Btrace的核心是基于字节码注入...

    btrace调试工具

    总结,BTrace作为一款强大的Java在线调试工具,通过字节码增强技术实现了对运行中的Java应用的实时监控,对于开发人员而言,是进行性能优化和问题排查的得力助手。合理运用BTrace,可以极大地提升线上问题解决的效率...

Global site tag (gtag.js) - Google Analytics