Full GC:收集年轻代,年老代,永久代(元数据区,即元空间、metaspace,java8后取代永久代)。
Major GC:只收集年老代。
年轻代(Eden区)满(无法为新创建的对象分配空间)时触发,survivor满时不触发,通过复制算法回收垃圾,复制算法不产生内存碎片。复制算法会将空间区间和活动区间交换。会触发stop-the-world,但速度很快。
Major GC触发机制老年代空间不够用,标记清理算法清理出连续的内存空间,分配给对象使用。
Full GC触发机制1> 调用System.gc()。
2> 老年代空间不足。
3> 方法区空间不足。
4> 通过Eden区,Survivor space1(From space)向Survivor space2(To space)复制时,对象大小大于To space可用内存,则将对象转存到老年代,且老年代可用内存小于该对象大小时,永久代(方法区)满也会触发Full GC,会导致Class Method元信息的卸载。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)