最近服务经常OOM,发现old区激增,存在大量无法释放的类,使用memory分析,GroovyClassLoder经常加载,求各位大佬解答
小弟第一次解决这种问题,并且项目中没有使用Groovy语言,但是引入了相关jar包,发现与数据库连接池相关,数据库连接池使用Druid,并且使用了Sharding-Sphere进行了单库分表;进行压测时发现内存使用90%以上;old经常会满,然后进行full GC释放一些;
下面时使用memory分析的一些图:
这是一些分析的图片,希望可以有大佬解答,如果还需要什么相关的分析请告知小弟;感谢感谢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
嗯,是Groovy动态加载原因
Groovy动态加载class文件,肯定会导致old区比较大,容易满,因为class信息都是存放在old区的。你这个情况要么在使用的时候,看什么情况下,class信息不需要,然后把class信息卸载掉,要么增大old区的内存大小,减少fullGc的次数
发现确实是因为shardingsphere的原因,项目去掉这个单库分表后确实好转很多
如果团队没有特别熟悉这玩意儿的尽量别用吧
https://github.com/apache/incubator-shardingsphere/issues/919