美文网首页
JVM young GC频繁,内存泄漏

JVM young GC频繁,内存泄漏

作者: 程序猿皮皮 | 来源:发表于2019-05-24 10:34 被阅读0次

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

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

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

image.png

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

在<<深入理解Java虚拟机>>3.2.3中有这么一句话

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

为啥跑到老年代呢,
一,因为年轻代gc太频繁了,数据库连接对象在短时间内超过15次存活年龄检查。
二,因为数据库连接两个参数
minEvictableIdleTimeMillis=300000 如果连接空闲超过这个时间,就可以被回收。
timeBetweenEvictionRunsMillis=120000 每次检查空闲的时间间隔

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

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

相关文章

  • JVM young GC频繁,内存泄漏

    young gc频繁,老年代占用线性上涨 young gc频繁因为产生系统使用log4j1版本在系统中大量使用de...

  • JVM

    简介 Jvm 系列一:Java类的加载机制Jvm系列二:JVM内存结构 --内存泄漏与内存溢出Jvm系列三:GC算...

  • JVM性能优化

    常见面试题:1)内存泄漏与内存溢出的区别(2)young gc会有stw吗?(3)major gc和full gc...

  • JVM - 垃圾回收器

    JVM - 垃圾回收器 Young GC 查找GC Roots,拷贝所引用的对象到to区GC ROOTS内存区域主...

  • 内存优化

    内存问题内存抖动:通过工具可以发现是锯齿状 , 可导致GC频繁,GC频繁会导致程序卡顿。内存泄漏:可用内存减少,导...

  • Android内存优化—内存优化总结

    内存问题 内存抖动:导致GC导致卡顿 内存泄漏:导致频繁GC,可用内存减少 内存溢出:导致OOM 工具排查 AS中...

  • Android 内存优化工具介绍

    一、内存优化介绍 内存问题:内存抖动:锯齿状、GC 导致卡顿内存泄漏:可用内存减少、频繁GC内存溢出:OOM、程序...

  • JVM GC

    分代GC JVM的GC机制叫做分代GC(generational GC),把内存分为两种:新生代(Young Ge...

  • 直击面试,聊聊 GC 机制

    GC 中文直译垃圾回收,是一种回收内存空间避免内存泄漏的机制。当 JVM 内存紧张,通过执行 GC 有效回收内存,...

  • 造成Android卡顿的原因

    以下内容整理自互联网,仅用于个人学习 内存泄漏导致内存占用较高,导致JVM频繁触发GC。解决办法:尽可能的减少生命...

网友评论

      本文标题:JVM young GC频繁,内存泄漏

      本文链接:https://www.haomeiwen.com/subject/mzwwzqtx.html