58内部使用的垃圾收集器

    对于很多互联网的应用程序来说,快速响应比服务所支持的吞吐量更重要。
    在Stop-The-World模式下,在整个垃圾回收的期间,应用程序都提供无法支持外部请求。
    虽然Minor GC一般回收时间会比较短,但是Full GC会导致较长时间的服务停顿,尤其是在old内存区比较大的话尤其会更长。


    CMS并非不暂停,而是采用两次短暂停。他分为如下几个阶段
    - 初始标记(STW initial mark)
    - 并发标记(Concurrent marking)
    - 并发预清理(Concurrent precleaning)
    - 重新标记(STW remark)
    - 并发清理(Concurrent sweeping)
    - 并发重置(Concurrent reset)
    其中初始标记和重新标记需要暂停用户线程,也叫STW(Stop-The-World)。

    收集周期见图一

图一

参数配置:
启用CMS:-XX:+UseConcMarkSweepGC。

开启CMS阶段进行合并碎片选项:-XX:+UseCMSCompactAtFullCollection。由于cms整个过程中不会进行整理、压缩堆空间,造成内存碎片而增加Full GC的次数,但是开启该选项会影响性能。

CMS回收线程:使用-XX:+UseParNewGC选项来开启。ParNew是Serial的并行版本,可以指定GC线程数,默认GC线程数为CPU的数量。可以使用-XX:ParallelGCThreads选项指定GC的线程数。

设置old区GC触发条件:默认CMS是在tenured generation占满68%的时候开始进行CMS收集,如果你的年老代增长不是那么快,并且希望降低CMS次数的话,可以适当调高此值:-XX:CMSInitiatingOccupancyFraction=80

最后贴上58内部用的jvm参数部分配置:

-XX:ParallelGCThreads=20
-XX:+UseConcMarkSweepGC
-XX:+UseParNewGC
-XX:+UseCMSCompactAtFullCollection
-XX:CMSInitiatingOccupancyFraction=80

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值