Perf4J和AOP

参考:

深入perf4j源码 - 上善若水 - BlogJava

perf4j @Profiled常用写法-CSDN博客

记录一次通过性能日志处理线上性能问题的过程-CSDN博客

 

性能调优分三步骤:1. 性能数据收集;2. 性能数据分析;3. 根据分析后的数据、代码以及系统特性进行调优

 

性能数据收集:

1) 代码侵入性的各类XXStopWatch。

2) perf4j提供了AOP方式的性能收集方式。perf4j采用AspectJ库实现AOP,AspectJ支持运行时和编译时的AOP织入(weaver),perf4j同时支持这两种方式。另外perf4j还支持Spring中代理方式的AOP。@Profiled注解

 

 

补充1:AOP(面向切面编程)的织入(weaving)方式是将切面逻辑应用到目标对象的过程,主要分为以下三种方式:

  • 编译时织入:在编译阶段将切面代码直接插入目标类字节码中。需使用 AspectJ 编译器(如ajc),优点是性能最优且无需运行时处理,但需特殊编译器配置且不适用于已编译的第三方库。 ‌

  • 类加载时织入:通过 JVM 类加载器动态修改目标类字节码。 Spring 默认使用 JDK动态代理 (接口代理)或 CGLIB代理 (非接口类代理),无需修改源代码,但性能较编译时略差。 ‌

  • 运行时织入:通过动态代理创建代理对象,在方法调用时拦截并执行切面逻辑。 Spring AOP 默认采用此方式,支持接口代理( JDK动态代理 )和非接口类代理( CGLIB代理 )。 ‌

 

补充2:AOP设计详解:从横切点定位到织入方式全面解析

 

 

 

posted @ 2025-07-25 15:10  CathyGao2018  阅读(9)  评论(0)    收藏  举报