Xmx最大堆内存 Xms初始堆内存 Xmn新生代内存 Xss栈内存
执行过程
和CMS类似,都是 1、初始标记;2、并发标记;3、最终标记;4、筛选回收
什么情况使用G1
运行CMS或者parallel gc的程序,如果有以下特征,那么切换为G1 GC会更为高效:
- 超过50%的Java堆被活动对象占据
- 对象分配的频率、对象在代之间变换的频率非常频繁
- 应用程序有过预期之外的长GC暂停或者压缩暂停(超过0.5秒,在1秒之内。如果超过1秒就应该怀疑是不是GC的参数配置问题了)
CMS会产生大量内存碎片,而G1对整个堆进行管理,单独分配内存,划分为多个region
G1从长期规划上讲是CMS的继任者。G1的处理gc的方式比CMS更加优秀。
一个重大的差别是G1是一种压缩处理gc
G1提供可被预测的gc暂停,也允许用户来指定要满足的暂停指标
相比,G1的设计是为了满足应用程序更少的GC暂停时间的目标