本篇文章是JProfiler生产实战分析第三篇
背景
近期线上又有个服务频繁重启告警,我预感这个服务又内存爆了,赶紧看一下监控。
分析过程
先上grafana上看一下整体的内存使用情况
堆使用整体比较正常,看看非堆的情况
谁家的类加载这么多啊。。。
找运维dump一下堆内存,导入JProfiler进行内存分析
查看一下类加载情况
实例数996(手动狗头),看来是fastjson导致的某个问题
打开一个类看看详情
找下相关的业务类,应该就是HuaweiPushApi这个类里面导致的,打开代码看看
感觉这块代码有问题,点进去SerializeConfig的构造方法,里面有一个ASMSerializerFactory
这个类会动态的生成class文件。
解决方案
将这个配置类对象定义成静态常量
改动上线,查看监控
问题解决,over。。。