如何利用AOP实现在执行目标方法前获取参数占用内存大小

这篇文章主要讲解了“如何利用AOP实现在执行目标方法前获取参数占用内存大小”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何利用AOP实现在执行目标方法前获取参数占用内存大小”吧!

利用AOP切面编程实现:打印目标方法的参数所占用内存大小。

如何利用AOP实现在执行目标方法前获取参数占用内存大小

Maven配置

		<dependency>
			<groupId>org.openjdk.jol</groupId>
			<artifactId>jol-core</artifactId>
			<version>0.8</version>
		</dependency>

Java代码

importlombok.extern.slf4j.Slf4j;
importorg.aspectj.lang.JoinPoint;
importorg.aspectj.lang.annotation.Aspect;
importorg.aspectj.lang.annotation.Before;
importorg.aspectj.lang.annotation.Pointcut;
importorg.openjdk.jol.info.GraphLayout;
importorg.springframework.stereotype.Component;

importjava.io.Serializable;

/**
*在目标方法执行前,打印目标方法的参数所占用内存大小
*/
@Aspect
@Slf4j
@Component
publicclassGraphLayoutPrinterimplementsSerializable{
privatestaticfinallongserialVersionUID=-8557926864119671723L;

/**
*com.xxx.batching包及所有子包下任何类的任何方法
*/
@Pointcut("execution(*com.xxx.batching..*.*(..))")
publicvoidpointCut(){}

@Before("pointCut()")
publicvoiduseMemory(JoinPointjoinPoint){
Objectarg=joinPoint.getArgs()[0];
longtotalSize=GraphLayout.parseInstance(arg).totalSize();
log.info("###Thetargetmethod:[{}]parameterusedmemoryis:[{}]KB",joinPoint.getSignature(),totalSize/1024);
}
}

感谢各位的阅读,以上就是“如何利用AOP实现在执行目标方法前获取参数占用内存大小”的内容了,经过本文的学习后,相信大家对如何利用AOP实现在执行目标方法前获取参数占用内存大小这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是恰卡编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

发布于 2021-07-09 21:19:22
收藏
分享
海报
0 条评论
189
上一篇:ThinkPHP中怎么设置禁止搜索引擎转码 下一篇:AOP如何实现监控方法执行耗时
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码