1.JProfiler内存溢出

Java内存OOM分析———海客森

1.JProfiler安装

  1. JProfiler评估CPU、内存以及线程来避免内存漏失,是一个性能监测工具
  2. 视频与工具地址:https://pan.baidu.com/s/1PHM9hW3lh5Y0MEd3bMxvOA
  3. 源码(码云):https://gitee.com/hikseason/demo-spring-boot-all.git

1.JProfiler9.2.1安装

  1. 注意JProfiler10安装后,注册码虽然校验通过,但是安装后还是失败的,最好用9
  2. 安装注册码,查看百度云

2.Idea安装插件

  1. ctrl+shift+A或者File==>settings,然后搜索安装Plugins
  2. 安装好后在启动程序(或tomcat)右侧有两个蓝色圆圈按钮
  3. 左边一个是替你启动tomcat容器,右边是启动后,调用的,选择相应主程序

2.内存溢出分析

  1. 启动SpringBoot程序,启动右侧的JProfiler按钮
  2. 查看LiveMemory

1.访问程序,暴露问题

  1. 访问:http://localhost:8080/test
  2. 访问:http://localhost:8080/hello
  3. 都出现了1000个对象的问题,但是有的是不会回收的

2.过滤分析(Live memory)

  1. 过滤包com.demo
  2. 处理垃圾回收,正上方环形圆圈,Run GC

3.线上问题(用户账户系统)

  1. 代码迁移过程中,不规范的老代码,在日志前面的时候
  2. 做了日志切面
@Component
@Aspect
public class SysOperationlogAspect extends CommonServiceImpl {
	private List<BeanSysOperationLog> logs=new ArrayList<BeanSysOperationLog>();  
	
   @Around("execution(* com.beikbank..*.*Service.*(..))")
	public Object doServiceAround(ProceedingJoinPoint pjp) throws Throwable{
		BeanSysOperationLog log=new BeanSysOperationLog();
 		logs.add(log);
		return result;
	}


  1. 原本有代码,进行伪清空的
//	@Around("execution(* com.beikbank..*.*Controller.*(..))")
	public Object doControllerAround(ProceedingJoinPoint pjp) throws Throwable{
    logs=new ArrayList<BeanSysOperationLog>();
    XXX
  1. 但是由于冲突,这里被注释了,无法回收logs,所以就造成new出来的Bean都在堆空间无法释放了

转载于:https://my.oschina.net/u/3888250/blog/1834069

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值