在java中,最常用的埋点时间的方法就是在方法运行前搞个常量记录当前时间,然后再方法结束的时候,搞个常量记录当前时间,然后两个的时间差就是方法的消耗时间。
这种处理问题不大,但是有时候我们想达到这样的效果,就是把树状的结构也搞出来。这样有层次,排查性能问题会非常方便。
1
2
3
|
0 [0ms] - rootMethod `---0 [0ms] - first `---0 [0ms] - second
|
于是借助webx框架(已经开源http://openwebx.org/)中的Profiler类,结合AOP,做了一个简单的例子,代码已经搞到自己的github上了,这样可以直接搞代码用了。
github地址:https://github.com/iamzhongyong/treeProfiler
类名的基本介绍:
1、Profiler类的作用,方法的开始时间和结束时间埋点;
2、Entry类的左右,作为开始时间和结束时间的实体类,同时有个List类型的subEntries,这样就能描述树状的结构了;
3、ThreadLocal类,线程级别的内存缓存,统计的entry放置在这里,但是在线程结束之后,要记得清理掉;
4、ProfilerAspect,AOP的增强类;
如何使用:
1、添加AOP的配置,把ProfilerAspect作为一个普通的bean注入到容器中即可;
2、然后在需要统计时间的地方,可以使方法上,也可以是类上面,添加注解@ProfileAnno;
3、之后就可以在日志中看树状的统计信息了,在ProfilerSwith中有相应的开关,外部系统可以自行实现;
相关推荐
57.java带参数方法调用.zip57.java带参数方法调用.zip57.java带参数方法调用.zip57.java带参数方法调用.zip57.java带参数方法调用.zip57.java带参数方法调用.zip57.java带参数方法调用.zip57.java带参数方法调用.zip...
Java反射 调用空参方法 调用Object类型参数的方法 调用基本类型参数的方法 调用基本类型数组参数的方法 调用String数组参数的方法 调用Object数组参数的方法 调用私有方法
Android Studio项目,此Demo实现Java调用C++函数,然后C++函数回调Java方法、纯C++直接调用Java方法,此为github地址链接
55.java方法调用.zip55.java方法调用.zip55.java方法调用.zip55.java方法调用.zip55.java方法调用.zip55.java方法调用.zip55.java方法调用.zip55.java方法调用.zip55.java方法调用.zip55.java方法调用.zip55.java...
java方法调用
java远程方法调用,可以实现远程调用,仅作参考
利用java反射原理实现方法的动态调用。
JAVA类的方法调用和变量 一、类的分类: 1、普通类 2、抽象类(含有抽象方法的类) 3、静态类(不需要实例化,就可以使用的类) 二、方法的分类: 1、私有方法(只有类的内部才可以访问的方法) 2、保护方法(只有...
ACCP5.0 JAVA方法调用万年历!采用方法调用的形式来做的万年历·····
Groovy 调用 Java 类groovy 调用 Java class 十分方便,只需要在类前导入该 Java 类,在 Groovy 代码中就可以无缝使用该
rmi 远程方法调用 客户端
C#调用java类、jar包方法C#调用java类、jar包方法C#调用java类、jar包方法C#调用java类、jar包方法C#调用java类、jar包方法。
Java RMI远程方法调用详解-例子代码,例子详解在:http://blog.csdn.net/guyuealian/article/details/51992182
调用WebService,最简单的办法当然是直接添加WEB引用,然后自动产生代理类,但是在调用JAVA的WebService时并没有这么简单,特别是对于SoapHeader的处理,通过C#添加Web引用方式访问JavaWebService的方法,除了string...
方法名(参数)}”这种格式来调用Java类的静态方法。 开发环境:IntelliJ IDEA 2019.2.2 Spring Boot版本:2.1.8 新建一个名称为demo的Spring Boot项目。 1、pom.xml 加入Thymeleaf依赖 <groupId>org.spring...
基于JavaParser的代码调用链分析,可以用于分析Java代码的方法调用链
JAVA调用DLL JAVA调用DLLJAVA调用DLLJAVA调用DLLJAVA调用DLLJAVA调用DLL
在C语言中调用java语言的方法!对初学者很不错的实例!Android jni开发之C语言调用java语言
通过java类的路径实例化类并调用方法:仅仅知道类的路径,就可以实例化对象,利用反射机制调用其方法
在定义方法时,一个方法内不能再定义另一个方法,即不能嵌套定义,但是在调用一个方法的过程中,还可以调用另一个方法,这是方法的嵌套调用。 方法的嵌套调用 假设main方法中调用a方法,a 方法中调用b方法,具体流程...