GC-Colletor调优------GC效率

这一节主要讨论的是JVM如何自动的优化GC时间

此时的内容只是粗略的翻译加个人理解,勿看

Topic

Garbage-Collector、Heap、runtime-compiler默认选项

  • 默认选择G1收集器(如何知道GC使用的GC收集器有哪些?
  • GC线程数的最大值是由heap的大小以及可用的CPU数量来决定的(这几个概是以怎样的方式关联上的?
  • 初始的堆大小是物理内存的1/64
  • 堆的最大值不超过物理内存的1/4
  • Tired Compiler, using both C1 and C2 ? </font color=red> 没理解

GC基于目标的自动调整策略(Behavior-Base Tuning)

  • Garbage-Collector可以提供了两个配置选项,通过配置这三个配置选项可以影响到GC的时间
    • Maximum Pause-Time Goal
      • pause-time的定义:Garbage-Collector收集和清理废弃内存时,暂停application运行所耗费的时间,从线性收集器来说,这部分就是GC时间
      • Maximum Pase-Time的意义:通过设置GC时间的上线
      • 设置方式:-XX:MaxGCPauseMillis=
      • 影响:这个值设置后,Garbage-Collector会去调整heap大小和其它跟GC时间相关的参数来保证GC时间不超过这个值,这些动作有可能导致频繁的GC
    • Throughput Goal (GC时间占比)
      • 定义:GC时间占比。(原文是:the throughput goal is measured in terms of the time spent collecting garbage, and the time spent outside of garbage collection is the application time)
      • 设置方式:-XX:GCTimeRatio=nnn。举例:-XX:GCTimeRatio=19 意味着,1/(1+19),GCTime占总时间的5%
      • 影响:如果这个目标没有达到,GC会自动的增加heap的大小
    • Footprint
      • 堆最小值:-Xms=、堆最大值:-Xmx=
      • 如果Maximum Pause-Time Goal和Throughput Goal两个目标都达到了,也会触发GC调整堆大小来避免两个目标同时达到阈值,上述两个参数可以控制Heap大小的范围
  • 调整策略
    1. 不要设置Xmx,除非你肯定你需要的Heap资源大于默认值
    2. Throughput Goal的设置已经能够满足绝大部分的应用需求
    3. MaxGCPauseMillis和Throughput的设置可能会导致heap的增加或者减少
    4. 如果Throughput没有达到预期&&Heap size == maximum siez,则说明Heap size太小
    5. 如果Throughput goal达到了阈值,但是pause time 太长,可以选择设置maximum-pasuse-time

参考文章

  • https://www.jianshu.com/p/c3a8a108da00
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值