转载:G1回收器,S0一直是0,S1一直100

在这里插入图片描述

因为G1的堆布局跟HotSpot VM里其它GC不一样——它只有一组逻辑上的survivor space,而不像其它HotSpot GC一样有两段明确、固定的地址空间用作survivor space——所以用jstat看G1的话肯定是survivor space 0显示0%,survivor space 1显示100%。这个是正常的。

G1在初始化jstat用的计数器的时候就指定了s0永远是0:

_from_counters = new HSpaceCounters("s0", 1 /* ordinal */,  
  pad_capacity(0) /* max_capacity */,  
  pad_capacity(0) /* init_capacity */,  
  _young_collection_counters);  
_to_counters = new HSpaceCounters("s1", 2 /* ordinal */,  
  pad_capacity(overall_reserved()) /* max_capacity */,  
  pad_capacity(survivor_space_committed()) /* init_capacity */,  
  _young_collection_counters);  
-XX:NewRatio=n
-XX:SurvivorRatio=n

这俩参数都是在G1之前就有的,在HotSpot的其它GC里用没问题;G1只是为了兼容以前的使用习惯才遵循这些老旧参数,实际上它们在G1都是不推荐的(跟G1的自动调整有冲突)

转载:
————————————————
版权声明:本文为CSDN博主「三侠剑」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yunxing323/article/details/108305235

原文地址:https://www.cnblogs.com/erlou96/p/14788725.html