CS-Notes 学习笔记
Java 后端 · Java 虚拟机

Full GC 在什么情况下触发?

先自己想一想,再看参考要点

参考要点

  • 调用 System.gc(),规范上只是建议,HotSpot 默认会执行一次 Full GC,-XX:+DisableExplicitGC 可以禁用
  • 老年代空间不足,例如大对象、长期存活的对象不断进入,或者空间分配担保失败,G1 中是混合回收来不及释放、复制时找不到空闲 Region,或 Humongous 对象找不到连续的 Region
  • JDK 7 及以前永久代不足,JDK 8 起元空间达到阈值(日志原因为 Metadata GC Threshold)时 Serial 和 Parallel 进行 Full GC,G1 先扩大元空间并启动并发标记卸载类,扩大失败才 Full GC
  • CMS 发生 Concurrent Mode Failure
在学习站中自测这道题看这道题所在的一天

学习站:先用面试题自评定级,按水平和面试日期排出每天的计划,自评过的题按间隔复习。免费、无需注册,记录只保存在自己的浏览器中。