频繁收集年轻代(Eden区 Survivor From区 Survivor To区),Minor GC
较少收集老年代,Full GC
基本不动元空间(jdk 1.8)
Java中的GC回有两种回收:年轻代的Minor GC,老年代的Full GC;新对象创建时如果Eden区不足会触发MinorGC,如果老年代的内存空间不足会触发FullGC,如果空间都不足抛出OutOfMemoryError
内存效率:复制算法>标记清除算法>标记整理算法
内存整齐度:复制算法=标记整理算法>标记清除算法
内存利用率:标记整理算法=标记清除算法>复制算法
1、 产生了太多朝生夕灭的对象导致需要频繁Minor GC
2、 新生代空间设置的比较小
1、 新生代空间设置过大
2、 对象引用链较长,进行可达性分析时间较长
3、 新生代survivor区设置的比较小,清理后剩余的对象不能装进去需要移动到老年代,造成移动开销
4、 内存分配担保失败,由Minor GC转化为Full GC
5、 采用的垃圾收集器效率较低,比如新生代使用serial收集器
原文:https://www.cnblogs.com/ningff/p/11687749.html