摘要: minor gc前空间担保失败,提前进行full gc minor gc后,老年代空闲空间放不下晋升的对象 cms 老年代空间占用超过 -XX:CMSInitiatingOccupancyFaction 比例 元数据区加载的类太多,满了 阅读全文
posted @ 2021-03-17 20:05 mushishi 阅读(337) 评论(0) 推荐(0) 编辑
摘要: 几个阶段 初始标记: 标记 gc roots直接引用的对象 STW 并发标记: 对老年代所有对象进行追踪 重新标记:第二阶段过程中系统还在运行,可能产生新的垃圾对象,也可能标记的存活对象变成垃圾对象了, 需要 stop the world 重新标记“并发标记”阶段的对象; STW , 参考 user 阅读全文
posted @ 2021-03-17 17:55 mushishi 阅读(411) 评论(0) 推荐(0) 编辑
摘要: 一个面试题: parnew + cms 如何保证只做 ygc,jvm参数要如何配置? 思路:要做到没有 full gc, 那么对象就不能晋升到老年代,也就是说要避免jvm进入老年代的内存分配策略: 需要避免大对象直接进入老年代,-XX:PretenureSizeThreshold ; 然后 surv 阅读全文
posted @ 2021-03-17 17:54 mushishi 阅读(202) 评论(0) 推荐(0) 编辑
摘要: ##一、背景 数据计算系统,日处理数据量在上亿的规模; 简单来说就是不停的从各种存储中读取大量数据在内存中进行计算处理,大致每分钟执行500次数据提取和计算任务 总共5台机器,那么每台机器每分钟大概负责100次数据提取和计算,每次提取 1万条数据,平均计算耗时10秒 二、GC过程分析 机器配置4C8 阅读全文
posted @ 2021-03-17 17:46 mushishi 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 为什么需要? 新生代采用的复制算法,留空一个 survivor 作为空间备份,当大量对象在 minor gc后仍然存活,survivor 无法放下,则会直接进入老年代, 需要老年代的空间保证能容纳得下这些对象。 ##如何担保? 空间担保比较的是 老年代最大的连续空闲空间 和 年轻代所有对象的内存大小 阅读全文
posted @ 2021-03-17 00:43 mushishi 阅读(346) 评论(0) 推荐(0) 编辑