1.调用System.gc()时
当调用System.gc()时,是建议JVM进行Full GC,只是建议,不是一定会发生,但一般情况下,JVM也会进行Full GC,进行Full GC时会让用户线程暂停执行,建议能不使用此方法就不使用,让虚拟机自己去管理它的内存
2.老年代空间不够时
老年代空间只有在新生代空间不足时,进入老年代空间或者创建了大对象时,才会出现空间不足的情况,当执行了Full GC后还是空间不足,就会抛出OOM,为了避免出现这种情况,我们尽量不要创建过大的对象或者数组
3.方法区空间不够时
方法区主要回收的是废弃常量和无用的类,当空间不足时,也会发生full GC