Throughput收集器

2019-02-11  本文已影响1人  ohjam

理解Throughput收集器

Throughput收集器在Minor GC或者Full GC时,应用线程都会暂停。


Throughput垃圾回收 - Minor GC.png

在Eden空间将用尽时,触发Minor GC,一部分对象移动到Survivor空间,其他的被移动到老年代。注意在Survivor中,在下一次Mino GC会将存活对象复制送入到另一块Survivor space,S0和S1角色交换,保证存活对象占用连续的内存空间,避免了碎片化的发生。

Throughput垃圾回收 - Full GC.png

Full GC会回收所有新生代包括Suvivor空间中所有的对象,只有有活跃引用的对象或者经过压缩整理的对象会在老年代中继续保存。

堆大小自适应调整

对任何一种应用,都可以通过实验确定堆和代的最佳大小,但是让JVM自己来选择是最容易的方法,而默认情况下自适应调整就是开启的。
有两个性能指标::-XX:MaxGCPauseMillis=N -XX:GCTimeRatio=N

如果同时都设置了这两个标志,MaxGCPauseMillis拥有最高的优先级,设置了MaxGCPauseMillis 标志后,新生代和老年代的大小会随之调整,知道满足对应目标停顿时间,一旦MaxGCPauseMillis目标达成,堆的总容量就开始逐渐调整,直到运行时间的比率达到设定值,这两个目标都达成后,JVM 会尝试缩减堆的大小,尽可能以最小的堆大小来满足这两个目标。

上一篇 下一篇

猜你喜欢

热点阅读