第232天学习打卡(知识点回顾 G1收集器)
Posted doudoutj
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第232天学习打卡(知识点回顾 G1收集器)相关的知识,希望对你有一定的参考价值。
知识点回顾
如何选择垃圾收集器
- 单CPU或小内存,单机程序 :
-XX:+UseSerialGC
- 多CPU,需要最大吞吐量,如后台计算型应用
-XX:+UseParallelGC或者 -XX:+UseParallelOldGC
- 多CPU,追求低停顿时间,需快速响应如互联网应用
-XX:+UseConcMarkSweepGC
-XX:+ParNewGC
G1(Garbage-First)收集器
G1是一种服务器端的垃圾收集器,应用在多处理器和大容量内存环境中,在实现高吞吐量的同时,尽可能的满足垃圾收集器暂停时间的要求。另外它还具有以下特性:
- 像CMS收集器一样,能与应用程序线程并发执行。
- 整理空闲空间更快
- 需要更多的时间来预测GC停顿时间
- 不希望牺牲大量的吞吐性能
- 不需要更大的Java Heap
G1收集器的设计目标是取代CMS收集器,它同CMS相比,在以下方面表现的更出色:
- G1是一个有整理内存过程的垃圾收集器,不会产生很多内存碎片
- G1的Stop the World(STW)更可控,G1在停顿时间上添加了预测机制,用户可以指定期望停顿的时间。
特点
- G1能充分利用多CPU,多核环境硬件优势,尽量缩短STW
- G1整体上采用标记-整理算法,局部是通过复制算法,不会产生内存碎片
- 宏观上看G1之中不再区分年轻代和老年代。把内存划分为多个独立的子区域(Region),可以近似理解为一个围棋的棋盘
- G1收集器里面将整个的内存区都混合在一起了,但其本身依然在小范围内要进行年轻代和老年代的区分,保留了新生代和老年代,但它们不再是物理隔离的,而是一部分Region的集合且不需要Region是连续的,也就是说依然会采用不同的GC方式来处理不同的区域。
- G1虽然是分代收集器,但整个内存分区不存在物理上的年轻代与老年代的区别,也不需要完全独立的survivor(to space)堆做复制准备,G1只是逻辑上的分代概念,或者说每个分区都可能随G1的运行在不同代之间前后切换。
以上是关于第232天学习打卡(知识点回顾 G1收集器)的主要内容,如果未能解决你的问题,请参考以下文章
第300天学习打卡(知识点回顾 hashmap如何实现线程安全)
第300天学习打卡(知识点回顾 hashmap如何实现线程安全)