第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的运行在不同代之间前后切换。

B站:尚硅谷Java大厂面试题第二季(java面试必学,周阳主讲)_哔哩哔哩_bilibili

以上是关于第232天学习打卡(知识点回顾 G1收集器)的主要内容,如果未能解决你的问题,请参考以下文章

第229天学习打卡(知识点回顾 GC垃圾器)

第226天学习打卡(知识点回顾 强引用 软引用)

第300天学习打卡(知识点回顾 hashmap如何实现线程安全)

第300天学习打卡(知识点回顾 hashmap如何实现线程安全)

第300天学习打卡(知识点回顾 hashmap如何实现线程安全)

第266天学习打卡(知识点回顾 springmvc支持的返回值)