G1GC

Xmx最大堆内存  Xms初始堆内存   Xmn新生代内存  Xss栈内存

执行过程
和CMS类似,都是 1、初始标记;2、并发标记;3、最终标记;4、筛选回收

什么情况使用G1
运行CMS或者parallel gc的程序,如果有以下特征,那么切换为G1 GC会更为高效:

  1. 超过50%的Java堆被活动对象占据
  2. 对象分配的频率、对象在代之间变换的频率非常频繁
  3. 应用程序有过预期之外的长GC暂停或者压缩暂停(超过0.5秒,在1秒之内。如果超过1秒就应该怀疑是不是GC的参数配置问题了)

CMS会产生大量内存碎片,而G1对整个堆进行管理,单独分配内存,划分为多个region
G1从长期规划上讲是CMS的继任者。G1的处理gc的方式比CMS更加优秀。
一个重大的差别是G1是一种压缩处理gc
G1提供可被预测的gc暂停,也允许用户来指定要满足的暂停指标
相比,G1的设计是为了满足应用程序更少的GC暂停时间的目标

你可能感兴趣的:(G1GC)