APM之原理篇

本文探讨了Android应用性能监控(APM)的原理,特别是通过ASM库来注入代码以实现性能监控。介绍了ASM字节码操作工具在Android APM中的作用,以及如何在dex编译过程中利用ASM注入代码。文章还提到了Instrumentation和VirtualMachine在APM中的角色,以及在Gradle插件和agent中实现APM的策略。虽然并未深入所有细节,但阐述了APM实现的关键技术和挑战,如ClassLoader、InvocationHandler的使用,以及方法替换、实例替换和重写等模式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

APM,应用性能监控,有new relic等产品,对APM感兴趣的应该不会不知道它了。主要功能就是统计分析应用的CPU、内存、网络、数据库、UI等性能,并提供错误日志捕获。编码人员需要做的仅仅是使用它提供的插件和jar包,增加一两行代码即可。接下来,本文会以android端的APM为例,分析它到底是用什么技术实现的,涉及到具体相关业务的,只会简单介绍,不作深入分析。

  • ASM
    ASM是一个字节码操作工具,可以用来改造class。使用方法和介绍可参考官方文档或者AOP 的利器:ASM 3.0 介绍。想要掌握ASM工具的使用,必须对JVM有一定的了解,特别是字节码、操作数栈等相关知识。另外,ASM还提供了一个eclipse插件Bytecode Outline plugin,用来查看字节码。对字节码不熟悉的可以先敲java代码,再用此插件查看对应的字节码。
  • dex和processClass方法
    既然使用起来很简单,它背后肯定已经帮我们做了很多事了。实际上,APM的插件会在将class编译成dex文件的时候注入相关的代码。比如我想统计某个方法的执行时间,那我只需要在每个调用了这个方法的代码前后都加一个时间统计就可以了。关键点就在于在编译dex文件的时候注入代码。这个编译的过程是由dx(dx.bat)执行的,具体的类和方法是com.android.dx.c
评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值