GC实验参数
GC选择相关参数
在GC演化过程中,GC会首先成为实验GC,一般会引入新的GC选择参数。
使用Epsilon GC进行内存管理。
准确地说,Epsilon不能称为垃圾回收器,更准确的称谓是内存管理器,它只有内存分配相关的实现,而没有对垃圾回收对象的识别和回收。这个“垃圾回收器”用于特殊的情况(如不需要进行垃圾回收),衡量垃圾回收器的基线版本数据。
引用处理相关参数
本节介绍控制引用处理的相关参数。
该参数用于控制并行引用处理的线程数目,在Java引用并行处理的情况下(ParallelRefProcEnabled为true),根据引用的数量计算并行线程的个数。该参数的默认值为1000,即每1000个引用对象增加一个线程(当然最多线程数目不能超过允许的最大值,例如ParallelGCThreads)。
GC任务均衡相关参数
本节介绍并行GC任务均衡的相关参数。
在并行任务终止时需要先执行Spin,然后执行Yield,最后再执行Sleep。
参数WorkStealingHardSpins和参数
WorkStealingSpinToYieldRatio控制Spin执行指令的最大次数(一般通过循环实现)。
参数WorkStealingHardSpins的默认值为4096,参数
WorkStealingSpinToYieldRatio的默认值为10,表示每10轮Spin之后,执行一次Yield,每一轮Spin执行的次数不超过4096(第一轮Spin执行的次数为4,第10轮Spin执行的次数为4096,按照等比数列依次从第1轮增加到第10轮)。
Yield每经过一定的次数进入Sleep,控制Yield的参数为
WorkStealingYields-BeforeSleep,参数的默认值为5000,表示要执行5000次Yield才会进入Sleep。
当进入Sleep后,一次睡眠的时间长度由参数WorkStealingSleepMillis控制,参数的默认值为1,表示每次睡眠1毫秒。