糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > java年轻代频繁gc_JVM young GC频繁 内存泄漏

java年轻代频繁gc_JVM young GC频繁 内存泄漏

时间:2023-11-22 02:52:38

相关推荐

java年轻代频繁gc_JVM young GC频繁 内存泄漏

young gc频繁,老年代占用线性上涨

young gc频繁因为产生系统使用log4j1版本在系统中大量使用debug日志输入,导致频繁创建Stringbuilder对象,然后导致年轻代空间不够,执行频繁gc

分析老年代内存泄漏是因为一个对象

image.png

这玩意是个啥呢,是个数据库连接相关的虚引用,每个数据连接对应生产这么一个虚引用对象,这个对象负责在连接对象被回收后通知系统。

在<>3.2.3中有这么一句话

“为一个对象设置虚引用关联的唯一目的就是能在这个对象被收集器回收时收到一个系统通知。”

为啥跑到老年代呢,

一,因为年轻代gc太频繁了,数据库连接对象在短时间内超过15次存活年龄检查。

二,因为数据库连接两个参数

minEvictableIdleTimeMillis=300000 如果连接空闲超过这个时间,就可以被回收。

timeBetweenEvictionRunsMillis=120000 每次检查空闲的时间间隔

就是说数据库连接对象强行被挤到年老代 然后随后可能连接已经释放,但是虚引用一直没有被回收,导致老年代越级越大。

怎么解决

把log4j升级到2版本,然后把日志尽量精细化管理,不要打印无谓的低级别的日志。

如果觉得《java年轻代频繁gc_JVM young GC频繁 内存泄漏》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。