一、概念

参考链接:
  garbage-first

发展过程:
1.7 出现
1.8 推荐使用
1.9 默认使用

1、特点

1)分代收集(逻辑分代)
2)空间整合(整体上属于“标记-整理”算法,不会导致空间碎片)
3)可预测的停顿(比CMS更先进的地方在于能让使用者明确指定一个长度为M毫秒的时间片段内,消
耗在垃圾收集上的时间不得超过N毫秒)
4)所谓Garbage-Frist,其实就是优先回收垃圾最多的Region区域

2、Region

将整个Java堆划分为多个 大小相等的独立区域(Region)

个数:2048个
大小:固定一样,数值范围在1M~32M(必须是2的n次幂)
内存:至少 2G 才能启动,一般堆内存至少 6G 才能用到生产环境上
分代:Region集合(新生代和老年代不再是物理隔离)

设置大小:-XX:G1HeapRegionSize=M

如果对象太大,一个Region放不下[超过Region大小的50%],那么就会直接放到H中

二、算法

标记-整理

三、过程(步骤)

1、初始标记(Initial Marking)

标记以下GC Roots能够关联的对象,并且修改TAMS的值,需要暂 停用户线程

2、并发标记(Concurrent Marking)

从GC Roots进行可达性分析,找出存活的对象,与用户线程并发执行

3、最终标记(Final Marking)

修正在并发标记阶段因为用户程序的并发执行导致变动的数据,需暂停用户线程

4、筛选回收(Live Data Counting and Evacuation)

对各个Region的 回收价值和成本进行排序 ,根据用户所期望的GC停顿时间制定回收计划

四、优缺

优点:

1、可以降低停顿时间,通过设置让停顿时间更短
2、可以变相的解决空间碎片

五、注意

1、堆内存要多大才能启动G1?

答案:2G以上
原因:region共2048个,每个region大小1M~32M,所以最小2048M = 2G

2、如何选择合适的垃圾收集器?

答案:官网链接Available Collectors

除非您的应用程序有相当严格的暂停时间要求,否则首先运行应用程序并允许VM选择收集器。
如有必要,调整堆大小以提高性能。
如果性能仍然达不到您的目标,请使用以下准则作为选择收集器的起点。

场景1:内存小于100M

使用 -XX:+UseSerialGC 选择串行采集器

场景2:应用程序在单处理器上运行,并且没有停顿时间要求

1)让VM选择采集器
2)使用 -XX:+UseSerialGC 选择串行采集器

场景3:如果(a)峰值应用程序性能是第一优先级,并且(b)没有暂停时间要求,或者可以接受1秒或更长的暂停

1)让VM选择收集器
2)使用 -XX:+UseParallelGC 选择并行收集器。

场景4:如果响应时间比总吞吐量更重要,并且垃圾收集暂停必须保持在大约1秒以下

选择具有 -XX:+useConMarkSweepGC 或 -XX:+UseG1GC 的并发收集器。

JVM——》G1垃圾收集器相关推荐

  1. JVM优化系列-JVM G1 垃圾收集器

    导语   G1回收器是在JDK1.7中正式使用的一种全新的垃圾回收器,它的目标是为了取代CMS回收器.G1回收器拥有独特的垃圾回收策略,和之前的任意的一种垃圾回收器都有所不同,但是从分代策略上来说依然 ...

  2. JVM G1垃圾收集器

    Garbage-First(后文简称G1)收集器是当今收集器技术发展的最前沿成果,在Sun公司给出的JDK RoadMap里面,它被视作JDK 7的HotSpot VM 的一项重要进化特征.从JDK ...

  3. JVM性能调优实践:G1 垃圾收集器介绍篇

    前言 前面两篇主要整理了性能测试的主要观察指标信息:性能测试篇,以及JVM性能调优的工具:JVM篇.这一篇先简单总结一下GC的种类,然后侧重总结下G1(Garbage-First)垃圾收集器的分代,结 ...

  4. JVM垃圾回收——G1垃圾收集器

    目录 一.什么是G1垃圾收集器 二.G1垃圾收集器的内存划分 三.G1垃圾收集器的收集过程 四.G1收集器的优缺点 五.G1收集器的JVM参数配置 一.什么是G1垃圾收集器 Garbage First ...

  5. 详解 JVM Garbage First(G1) 垃圾收集器

    前言 Garbage First(G1)是垃圾收集领域的最新成果,同时也是HotSpot在JVM上力推的垃圾收集器,并赋予取代CMS的使命.如果使用Java 8/9,那么有很大可能希望对G1收集器进行 ...

  6. JVM垃圾回收器-G1垃圾收集器

    Java8的G1垃圾回收器官方文档参考:https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/g1_gc.html#ga ...

  7. java -g_【JVM】7、深入理解Java G1垃圾收集器

    本文首先简单介绍了垃圾收集的常见方式,然后再分析了G1收集器的收集原理,相比其他垃圾收集器的优势,最后给出了一些调优实践. 一,什么是垃圾回收 首先,在了解G1之前,我们需要清楚的知道,垃圾回收是什么 ...

  8. JVM之G1垃圾收集器

    一.概述: G1(Grabage-First)是一款面向服务端应用的垃圾收集器,主要针对配备多核cpu及大容量内存的机器,以及高概率满足GC停顿时间的同时,还兼顾高吞吐量的的性能特征 在JDK1.7版 ...

  9. JVM性能调优实践——G1 垃圾收集器分析、调优篇

    前言 关于G1 GC以及其他垃圾收集器的介绍可以参考前一篇JVM性能调优实践--G1 垃圾收集器介绍篇.了解了G1垃圾收集器的运行机制之后,就可以针对一些GC相关参数来调整内存分配以及运行策略.下文的 ...

  10. JVM基础 -> G1垃圾收集器

    说说G1垃圾收集器 G1概览 G1 GC 全称是Garbage First Garbage Collector,垃圾优先垃圾回收器,以下简称G1. G1是HotSpot JVM的短停顿垃圾回收器. 其 ...

最新文章

  1. Git的stash操作
  2. HDU - 1547 Bubble Shooter(dfs+连通块+模拟)
  3. python带参装饰器的改良版
  4. lamp配置python_LAMP搭建笔记
  5. 爱情二十四课,妥协50分
  6. round - 精确的几位小数
  7. CrackMe011
  8. Tensorflow:tensor数据类型转换、计算和变换
  9. 3. beanstalkd
  10. 对计算机硬件的工作原理的认识,计算机硬件组成及工作原理
  11. mysql存储emij表情_【MySQL】存储emoji表情报错(Incorrect string value: '\xF0\x9F\x98\x82\xF0\x9F...')的解决方案...
  12. xlsread服务器出现意外情况
  13. 201521123037 《Java程序设计》第6周学习总结
  14. mac python环境搭建
  15. setAttribute 和 getAttribute区别
  16. CentOS8 防火墙设置
  17. 读书笔记(三)--拜占庭问题
  18. 大数加法(使用结构体)
  19. SSL/TLS 双向认证(一) -- SSL/TLS 工作原理
  20. 第03课:怎么针对微服务架构做单元测试?

热门文章

  1. 后疫情时代美业系统saas解决线下实体美容院美甲店的困境
  2. ntohl()、htonl()、ntohs()、htons()函数
  3. 出道即封神的ChatGPT,现在怎么样了?
  4. sun 收购 mysql_MySQL创始人:确保收购Sun 甲骨文应售MySQL
  5. 1.3 DICOM成像协议实现思路
  6. Webug4.0靶场通关
  7. 输入界面,关于stretchColumns和selectAllOnFocus的属性设置
  8. CSS样式的格式命名,CSS命名规范:BEM
  9. ajax+springboot文件上传
  10. 【C++札记】标准输入与输出