Spring AOP实现日志功能时java.lang.OutOfMemoryError
-
需求:当程序调用每个service方法时记录客户端ip、调用时间、调用的方法全限定名和传入的参数
-
做法:step01定义一个记录日志的切面
step02把切面配置到每个service方法的尾部
重点
运行后console一直跳动,注释掉systemlogService.write(systemlog);
就正常了,说明问题出在这行代码
控制台:
凭借经验,出现了死循环
tomcat log:
可以确定程序中出现了死循环
由于注释掉systemlogService.write(systemlog);
就正常了
说明:systemlogService.write(systemlog);
导致了死循环
原因
配置切面时给`systemlogService也配置了切面,导致记录日志时也要为记录日志记录日志,导致死循环
解决
因为为所有的service方法配置了记录日志的切面,所以记录日志不能放在service中:将systemlogService.write(systemlog);
改为systemlogMapper.insert(systemlog);
对于
java.lang.OutOfMemoryError: Java heap space
有的同学的解决方法是更改heap的大小,一般程序正常运行,heap的默认大小够用