深入JVM之G1收集器

深入JVM之G1收集器

一、G1收集器简介

  1. G1收集器(JDK1.7u4正式出现) 
    这里写图片描述

普遍存在:全内存扫描问题。 
传统的收集器不能满足高内存高cpu的要求,这才是G1产生的原因。

2.G1区域划分 
这里写图片描述

在G1之中不再区分所谓的年轻代、老年代内存空间,所有的内存空间就是一块。但是要划分出不同的子区域。

二、G1收集策略

虽然在G1收集器里面将整个内存区域都混合在了一起,但是其本身依然也是在小范围内要进行年轻代与老年代的区分,也就是说依然会采用不同的GC方式来处理不同的区域。

G1——年轻代有对象 
这里写图片描述

G1——年轻代对象被回收 
这里写图片描述

所有的垃圾内存的保存区域有可能会被清空后重新分配。

但是老年代的处理流程不一样了,因为任何时候如果要想标注老年代的不用内存空间,都需要进行一些暂停,而G1之中的最大好处它不用进行全内存扫描,只需要按照区域来进行扫描即可。

G1老年代回收 
这里写图片描述

G1——老年代,标记阶段 
这里写图片描述

G1——老年代,根区域扫描 
这里写图片描述

G1——老年代,重新标记阶段 
这里写图片描述

G1——老年代,清理、拷贝阶段 
这里写图片描述

G1——清理完毕 
这里写图片描述

三、G1相关处理参数

清楚了G1的基本运行原理之后,那么下面就需要进行一些G1的配置。(需慎重使用,可能会有一些问题出现)

G1收集器参数 
这里写图片描述

范例:使用G1回收器

java -Xmx10m -Xms10m -XX:+UseG1GC -XX:+PrintGCDetails TestDemo

G1处理和传统的垃圾收集策略是不同的,关键的因素是它将所有的内存进行了子区域的划分。

猜你喜欢

转载自blog.csdn.net/p312011150/article/details/81384067
今日推荐