
1.1.1. 刚刚被创建并且还在使用中,所以不能被回收,但它们的寿命并没有长到足以进入老年代
1.1.2. 仍在新生代中的对象有额外的机会被回收,而不是晋升到(并填满)老年代
1.4.1. Survivor空间非常小,当目标Survivor空间在新生代回收过程中被填满时,Eden空间中剩余的任何活跃对象都会被直接移入老年代
1.4.2. 对于停留在Survivor空间中的对象,其经历的GC周期数量有限制,超过这个限制的对象会被直接移入老年代
1.5.1. 初始大小
1.5.2. 默认值为8
1.5.3. survivor_space_size = new_size / (initial_survivor_ratio + 2)
1.6.1. 最大值
1.6.2. 默认情况为3
1.6.3. maximum_survivor_space_size = new_size / (min_survivor_ratio + 2)
1.6.4. 最小的比例可以得到最大的Survivor空间
1.7.1. 将SurvivorRatio设置为期望的值
1.7.2. 禁用UseAdaptiveSizePolicy标志
1.9.1. Throughput回收器和G1 GC回收器默认是7
1.9.2. CMS默认是6
1.10.1. 最大阈值
1.10.2. Throughput回收器和G1 GC回收器的默认最大阈值是15
1.10.3. CMS的是6
1.11.1. 永远晋升
1.11.2. 相当于把MaxTenuringThreshold设为0
1.11.3. 对象总是会晋升到老年代,而不是存储在Survivor空间中
1.11.4. 默认是false
1.12.1. 永不晋升
1.12.2. 将初始晋升阈值和最大晋升阈值认为是无穷大
1.12.3. 只要Survivor空间仍有空闲,任何对象都不会晋升到老年代
1.12.4. 默认也是false
1.12.5. 防止JVM降低晋升阈值
1.13.1. 在JDK 8中
1.13.2. 将对象年龄分布添加到GC日志中
1.13.3. 默认是false
1.14.1. 在JDK11中
1.14.2. 将对象年龄分布添加到GC日志中
1.14.3. 默认是false
2.1.1. thread-local allocation buffer,TLAB
2.1.2. 默认是开启的
2.1.3. 所有的GC算法都要考虑TLAB的大小
2.1.4. 它们很小,所以TLAB内不能分配大对象
2.2.1. 应用程序中的线程数量
2.2.2. Eden空间的大小
2.2.3. 线程的分配速率
2.3.1. 分配很多大对象的应用程序
2.3.2. 和Eden空间的大小相比,线程数量相对较多的应用程序
2.5.1. 减小分配对象的大小
2.5.2. 调整与TLAB大小相关的参数
2.9.1. -XX:TLABSize=N标志
2.9.1.1. 默认值为0
2.9.1.2. 显式地设置TLAB的大小
2.9.1.3. 只能设置TLAB的初始大小
2.9.2. -XX:-ResizeTLAB标志
2.9.2.1. 默认是true
2.9.2.2. 防止每次GC时都调整大小
2.9.3. 调整TLAB以提升性能的最简单的方法,也是唯一有用的方法
2.10.1. 阈值
2.10.2. 默认是TLAB大小的1%
2.10.3. 动态的
2.11.1. 增幅
2.11.2. 默认是4
2.12.1. TLAB的最小值
2.12.2. 默认为2 KB
2.13.1. 可以容纳一个整数数组的最大空间,数组大小向下取整以对齐对象
2.13.2. 不能修改
登录查看全部
参与评论
手机查看
返回顶部