Parallel Scavenge 新生代收集器

新生代,多线程,使用复制算法,是多线程的并行的收集器。
目标:达到一个可控的吞吐量(Throughput)
吞吐量:CPU用于运行代码时间 与 CPU总消耗时间的 比
公式: 吞吐量 = 运行代码时间 / ( 运行代码时间 + GC时间)
虚拟机运行 100 分钟,GC用掉1分钟,则吞吐量为99%。 100 /(100 + 1) = 0.99

1.停顿时间越短越好

-XX:MaxGCPauseMillis: 最大GC停顿时间,最小可为0
-XX:GCTimeRatio: 吞吐量大小,1-100

2.停顿时间与空间成反比

停顿时间越短,则新生代的空间就越小。
通过减小新生代的空间,让里面的垃圾变少,从而加快了集速度。
原来:500MB 垃圾,10秒收集一次,每次停顿100毫秒
为了缩短时间,修改** -XX:MaxGCPauseMillis** 参数,使新生代空间变小,产生的垃圾就少了,停顿时间短了:
现在:300MB 垃圾,5秒收集一次, 每次停顿70毫秒。

那时问题来了,停顿时间下降了,但是频率高了,则吞吐量也跟着降下来了。

3.GC 时间占总时间的比例

GCTimeRatio 进行这个设置1-100之间,相当于吞量的倒数。
计算方法:
1.设置为 19 则: 1 / (1 + 19) = 5%,即最大 5% 的收集时间
2.设置为 99 则: 1 / (1 + 99) = 1%,即最大 1% 的收集时间

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 通过这篇文章你能知道的问题: 1.如何判断对象是活着还是死去? 2.在Java语言中,可作为GCRoots的对象有...
    beneke阅读 5,152评论 0 1
  • 原文阅读 前言 这段时间懈怠了,罪过! 最近看到有同事也开始用上了微信公众号写博客了,挺好的~给他们点赞,这博客我...
    码农戏码阅读 11,210评论 2 31
  • Java 虚拟机有自己完善的硬件架构, 如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM 屏蔽了与具体操作系...
    尹小凯阅读 5,608评论 0 10
  • 1.什么是垃圾回收? 垃圾回收(Garbage Collection)是Java虚拟机(JVM)垃圾回收器提供...
    简欲明心阅读 90,129评论 17 311
  • 大风吹,吹四方,吹不乱我方向,谁知我心所向,谁知我心所向——每当听起这首大风歌,都让我内心激荡不已,想起古人的壮志...
    扭曲人阅读 1,534评论 0 0