项目运行卡顿,页面加载慢。
查看CPU使用率,内存使用率,分析是否有耗时的线程,是否由于编码不规范导致产生对象过多等。
可以看到,是垃圾回收线程cpu使用率较高,说明一直在进行垃圾回收
老年代基本被占满,所以导致了频繁FGC。但是未发生内存溢出错误,猜测是项目本身需要初始化对象占用的空间较大。
可以看到字节数组占用空间最大(约113MB)
猜测是下面的map中存放了很多String和字节数组,需要熟悉项目架构再具体分析。
从上至下是对象占用空间的排序,
需要进一步熟悉业务代码,哪里有使用了较多的字节数组,字符串,集合
发现有循环引用,可能是导致无法被垃圾回收器回收掉的原因?
可以看到平均不到2s就要触发一次FULL GC,并且每次GC后,堆的已使用空间并未明显减少,说明存货对象较多,同时,也未见有明显增长,说明是项目本身运行需要初始化约456.8MB的对象空间
调整堆空间内存为2GB后,再次查看垃圾回收信息
如图,间隔60s采样,采样十次
老年代空间使用增长依然略快,建议按照上面分析优化代码。
堆空间内存调整为2G后,基本可以平稳运行,建议线上调整为4G左右。或调整年轻代和老年代比率,提升年轻代空间,减少YGC。
因篇幅问题不能全部显示,请点此查看更多更全内容