OOM-Java内存不足排查与分析

本文介绍了在H5页面调用APP系统token认证接口时遇到的Java内存溢出问题。通过排查代码内存泄漏、检查JVM堆内存参数配置、收集并分析OOM日志,最终定位到一个实体类占用大量内存导致的问题。解决方案是更新fastjson到1.2.83及以上版本,从而消除内存泄漏,成功解决了问题。
摘要由CSDN通过智能技术生成

一、背景

       项目程序是内嵌到APP的H5页面,从APP跳转进入H5页面需要调用APP系统的token认证接口,近期某个时间点出现登录验证失败情况,排查服务日志,发现token认证接口服务报错(java.lang.OutOfMemoryError: Java heap space)。

二、排查过程

       1、服务代码内存泄漏情况排查

            a、是否有循环引用情况

            b、长生命周期对象持有短生命周期对象的引用

                 (例子:全局静态map中缓存局部变量、且没有清空操作,map越来越大)

            c、长时间开启非常耗费资源的连接

       2、程序堆内存参数配置是否合理
             a、根据服务器资源情况配置,理论可配置服务器内存的1/4 (-Xmx1204M -Xms1024M)

             b、Xmx和Xms值尽量配置一致,不一样情况,初始化JVM堆内存空间较小,这会导致每当空间不够用的时候会向操作系统申请,需要进行一次GC

       3、收集oom日志,定位内存消耗情况

            a、java启动命令添加参数,当程序发生oom情况会输出详细日志

           (-Xmx1204M -Xms1024M -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+DisableExplicitGC -XX:+HeapDumpOn

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值