1、200 并发用户压测登录接口,发现userapp模块报错,登录失败。发生 oom。

2、取出 dump 文件 ,**.hropf 文件,导入 mat 进行分析,

3、mat工具用的最多的功能是 Histogram, 点击 Actions下的 Histogram项,

4、在你怀疑的有大内存的那项上右键打开菜单选择 list objects ->with incoming refs 将列出该类的实例

5、它展示了对象间的引用关系,快速找出某个实例没被释放的原因,可以右健 Path to GC Roots-->exclue all phantom/weak/soft etc. reference

性能调优 之 oom大内存分析_oom调优

从上图看出: java.lang.object[186943] 对象 本身占用内存 7.4M,被引用时所占内存7.4M,且被市场渠道模块引用,高并发调用多了,内存被耗尽。截图给开发,分析该代码有问题,发现一次性把10万用户信息放在一起被调用,后面经过技术方案讨论进行分批调用每次2万调用。

6、优化这块代码后并发 200并发用户继续压测后没有报错,问题解决。