温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2021-07-09 17:11:13 来源:亿速云 阅读:154 作者:chen 栏目:编程语言

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

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

Maven配置

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

Java代码

import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.openjdk.jol.info.GraphLayout;
import org.springframework.stereotype.Component;

import java.io.Serializable;

/**
 * 在目标方法执行前,打印目标方法的参数所占用内存大小
 */
@Aspect
@Slf4j
@Component
public class GraphLayoutPrinter implements Serializable {
    private static final long serialVersionUID = -8557926864119671723L;

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

    @Before("pointCut()")
    public void useMemory(JoinPoint joinPoint){
        Object arg = joinPoint.getArgs()[0];
        long totalSize = GraphLayout.parseInstance(arg).totalSize();
        log.info("###The target method:[{}] parameter used memory is:[{}]KB",joinPoint.getSignature(),totalSize / 1024);
    }
}

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

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

aop
AI