摘要:
转自 https://stackoverflow.com/questions/34670751/why-gc-on-old-generation-takes-longer-than-gc-on-young-generation 主要是两点: - 年轻代的对象通常比较小、存活时间非常短,需要频繁回收 阅读全文
摘要:
大对象直接进入老年代 相关参数 -XX:PretenureSizeThreshold 动态年龄判断 minor gc 后,一批对象总大小超过了 survivor 区的 50%,那么就让大于等于这批对象年龄的对象直接进入老年代 具体规则是,从年龄1的对象开始,把 年龄1 + 年龄2 + 年龄n 多个年 阅读全文
摘要:
对象分配过程 执行方法时候, 方法压入栈中,局部变量指向的对象在新生代分配内存 当方法执行完毕,局部变量随栈帧弹出 这时候内存对象就没人引用了 随着1、2步骤的不断发生,新生代内存满了 ,触发 young gc 回收掉哪些不再被引用的对象实例 如果有的对象逃过15次 young gc 都还活着(一般 阅读全文
摘要:
加载 → 连接(验证 → 准备 → 解析) → 初始化 加载: 将.class文件load到内存中 连接: 验证: 验证 .class 文件是否符合jvm虚拟机规范,cafebabe 字样, 有没有被篡改 准备: 类变量(静态变量) 分配内存,如 static int a = 1; 这个时候给静态变 阅读全文