ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java虚拟机--垃圾收集器--parallel Scavenge 收集器

2021-12-16 10:00:59  阅读:110  来源: 互联网

标签:收集 收集器 -- 虚拟机 XX 吞吐量 参数 垃圾


Parallel Scavenge收集器也是一款新生代收集器, 它同样是基于标记-复制算法实现的收集器, 也是能够并行收集的多线程收集器.

Parallel Scavenge 收集器的目标是达到一个可控制的吞吐量(Throughput). 所谓吞吐量就是处理器用于运行用户代码的时间与处理器总消耗时间的比值, 即: 吞吐量=运行用户代码时间/(运行用户代码时间+运行垃圾收集时间).

Parallel Scavenge 收集器提供了两个参数用于精确控制吞吐量, 分别是控制最大垃圾收集停顿时间的 -XX:MaxGCPauseMillis 参数以及直接设置吞吐量大小的 -XX:GCTimeRatio 参数.

-XX:MaxGCPauseMillis 参数允许的值是一个大于 0 的毫秒数, 收集器将尽力保证内存回收花费的时间不超过用户设定值. 不过大家不要异想天开地认为如果把这个参数的值设置得更小一点就能使得系统的垃圾收集速度变得更快, 垃圾收集停顿时间缩短是以牺牲吞吐量和新生代空间为代价换取的: 系统把新生代调得小一些, 收集300MB新生代肯定比收集500MB快, 但这也直接导致垃圾收集发生得更频繁, 原来10秒收集一次、每次停顿100毫秒, 现在变成5秒收集一次、每次停顿70毫秒. 停顿时间的确在下降, 但吞吐量也降下来了.

-XX:GCTimeRatio 参数的值则应当是一个大于 0 小于 100 的整数, 也就是垃圾收集时间占总时间的比率, 相当于吞吐量的倒数. 譬如把此参数设置为 19, 那允许的最大垃圾收集时间就占总时间的 5% (即1/(1+19), 默认值为 99, 即允许最大1%(即1/(1+99))的垃圾收集时间.

Parallel Scavenge 收集器也经常被称作“吞吐量优先收集器”. 除上述两个参数之外, Parallel Scavenge 收集器还有一个参数 -XX:+UseAdaptiveSizePolicy 值得我们关注. 这是一个开关参数, 当这个参数被激活之后, 就不需要人工指定新生代的大小(-Xmn)、Eden 与 Survivor 区的比例(-XX:SurvivorRatio)、晋升老年代对象大小(-XX:PretenureSizeThreshold)等细节参数了, 虚拟机会根据当前系统的运行情况收集性能监控信息, 动态调整这些参数以提供最合适的停顿时间或者最大的吞吐量. 这种调节方式称为垃圾收集的自适应的调节策略.

标签:收集,收集器,--,虚拟机,XX,吞吐量,参数,垃圾
来源: https://www.cnblogs.com/xxoome/p/15696515.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有