
2.2.2.1. Eden空间一般是空的
2.2.2.2. 不认为它被压缩了
2.3.3.1. 只占用老年代的开始部分
2.3.3.2. 其余部分是空闲的内存空间
2.4.2.1. 时间和空间的取舍
2.4.2.1.1. 更大的堆会消耗机器上更多的内存
2.4.2.1.2. 应用程序会有更高的吞吐量
2.4.2.2. 执行GC所需的时间长度
2.4.2.2.1. 增加堆的大小可以减少Full GC停顿的次数
2.4.2.2.2. GC时间较长,可能延长平均响应时间
2.4.2.2.3. 为了缩短GC停顿时间
2.4.2.2.3.1. 将更多的堆分配给新生代而不是老年代
2.4.2.2.3.2. 会增加老年代回收的频率
2.5.3.1. 用于设定应用程序可接受的最大停顿毫秒数
2.5.3.2. 默认情况下,不设置这个标志
2.5.3.3. 适用于Minor GC和Full GC
2.5.3.4. 如果使用了一个非常小的值,那么应用程序最终会得到一个非常小的老年代
2.5.5.1. 设定你希望应用程序在GC上花费的时间(相对于应用程序线程应该运行的时间)
2.5.5.2. 标志的默认设置很适用
2.5.5.2.1. 默认值是99
2.5.5.2.2. 在没有其他目标的情况下,推荐时间比例设置为19(GC时间占5%)
2.5.5.3. ThroughputGoal=1-(1÷ (1+GCGCTimeRatio))
3.7.5.1. 会等到新生代被占用50%后才开始
3.7.5.2. 阶段的中止,这是停止这个阶段的唯一方式
3.8.2.1. 它耗时如此之长的原因之一
3.8.2.2. 并发模式失败随着堆的增长而影响更大的原因之一
3.11.1.1. 避免并发模式失败是实现CMS最佳性能的关键
3.11.1.2. 避免这些失败的最简单的方法(在可能的情况下)是增加堆的大小
3.11.4.1. 提早开始并发周期
3.11.4.2. -XX:CMSInitiatingOccupancyFraction=N
3.11.4.2.1.1. CMS并发周期会在老年代被占用70%时开始
3.11.4.3. -XX:+UseCMSInitiatingOccupancyOnly
3.11.4.4. 如果两个都设置了,CMS就会只根据老年代的填充比例来决定何时启动后台线程
3.11.4.5. 此处的占用率是基于老年代的,而不是整个堆
3.11.5.1. -XX:ConcGCThreads=N
3.11.5.1.1. 增加后台线程数量
3.11.5.1.2. ConcGCThreads = (3 + ParallelGCThreads) / 4
3.11.5.1.3. 能比G1 GC早一步增加ConcGCThreads的值
登录查看全部
参与评论
手机查看
返回顶部