上一篇已经分析了(https://mp.youkuaiyun.com/postedit/102959321)JVM除了HEAP还有哪些内存占用,也进行了一部分的参数调优,但是并没有根本解决这个问题 ,只是发生内存占满的时间变长了一些。
上章的策略:1.减少xss占用 2.减少不必要的线程占用(主要集中在es线程,参数transport.netty.worker_count)
使用jcmd命令已经发现jvm的内存增长主要集中在class、code部分,所以分析可能有动态的类不断生成,

分析过程:
选择每天进行堆内存文件的dump,
使用MAT工具分析,
进入campareset,

导出csv,然后过滤筛选出,新增的class,
可以发现生成了一堆的GenerateMethodAccessor类,查询资料发现是由于spring4.2.5以下版本,生成代理漏洞导致,参考:https://my.oschina.net/blackgladiolus/blog/854395
本文介绍了针对JVM元数据空间增长的问题进行的深入分析。通过减少XSS和不必要的线程占用,延长了内存占满的时间,但并未根本解决问题。通过jcmd命令发现内存增长主要在class和code部分,推测存在动态类生成。使用MAT工具进行堆内存分析,发现大量GenerateMethodAccessor类,归因于Spring 4.2.5以下版本的代理漏洞。提供了解决方案和参考资料链接。
86万+

被折叠的 条评论
为什么被折叠?



