GC 类型 | 触发条件 | 触发时发生了什么 | 注意 | 查看方式 |
---|---|---|---|---|
YGC | eden 空间不足 | 清空 Eden+from survivor 中所有 no ref 的对象占用的内存;将 eden+from sur 所有存活的对象 copy 到 to sur 中;一些对象将晋升到 old 中:to sur 放不下的、存活次数超过 turning threshold 中的;重新计算 tenuring threshold(serial parallel GC 会触发此项);重新调整 Eden 和 from 的大小(parallel GC 会触发此项) | 全过程暂停应用,是否为多线程处理由具体的 GC 决定 | jstat –gcutil gc log |
FGC | old 空间不足;perm 空间不足;显示调用 System.GC, RMI 等的定时触发;YGC 时的悲观策略;dump live 的内存信息时(jmap –dump:live) | 清空 heap 中 no ref 的对象;permgen 中已经被卸载的 classloader 中加载的 class 信息;如配置了 CollectGenOFirst,则先触发 YGC(针对 serial GC);如配置了 ScavengeBeforeFullGC,则先触发 YGC(针对 serial GC) | 全过程暂停应用是否为多线程处理由具体的 GC 决定是否压缩需要看配置的具体 GC | jstat –gcutil gc log |
permanent generation 空间不足会引发 Full GC,仍然不够会引发 PermGen Space 错误。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于