JVM——》G1垃圾收集器
一、概念
参考链接:
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垃圾收集器相关推荐
- JVM优化系列-JVM G1 垃圾收集器
导语 G1回收器是在JDK1.7中正式使用的一种全新的垃圾回收器,它的目标是为了取代CMS回收器.G1回收器拥有独特的垃圾回收策略,和之前的任意的一种垃圾回收器都有所不同,但是从分代策略上来说依然 ...
- JVM G1垃圾收集器
Garbage-First(后文简称G1)收集器是当今收集器技术发展的最前沿成果,在Sun公司给出的JDK RoadMap里面,它被视作JDK 7的HotSpot VM 的一项重要进化特征.从JDK ...
- JVM性能调优实践:G1 垃圾收集器介绍篇
前言 前面两篇主要整理了性能测试的主要观察指标信息:性能测试篇,以及JVM性能调优的工具:JVM篇.这一篇先简单总结一下GC的种类,然后侧重总结下G1(Garbage-First)垃圾收集器的分代,结 ...
- JVM垃圾回收——G1垃圾收集器
目录 一.什么是G1垃圾收集器 二.G1垃圾收集器的内存划分 三.G1垃圾收集器的收集过程 四.G1收集器的优缺点 五.G1收集器的JVM参数配置 一.什么是G1垃圾收集器 Garbage First ...
- 详解 JVM Garbage First(G1) 垃圾收集器
前言 Garbage First(G1)是垃圾收集领域的最新成果,同时也是HotSpot在JVM上力推的垃圾收集器,并赋予取代CMS的使命.如果使用Java 8/9,那么有很大可能希望对G1收集器进行 ...
- JVM垃圾回收器-G1垃圾收集器
Java8的G1垃圾回收器官方文档参考:https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/g1_gc.html#ga ...
- java -g_【JVM】7、深入理解Java G1垃圾收集器
本文首先简单介绍了垃圾收集的常见方式,然后再分析了G1收集器的收集原理,相比其他垃圾收集器的优势,最后给出了一些调优实践. 一,什么是垃圾回收 首先,在了解G1之前,我们需要清楚的知道,垃圾回收是什么 ...
- JVM之G1垃圾收集器
一.概述: G1(Grabage-First)是一款面向服务端应用的垃圾收集器,主要针对配备多核cpu及大容量内存的机器,以及高概率满足GC停顿时间的同时,还兼顾高吞吐量的的性能特征 在JDK1.7版 ...
- JVM性能调优实践——G1 垃圾收集器分析、调优篇
前言 关于G1 GC以及其他垃圾收集器的介绍可以参考前一篇JVM性能调优实践--G1 垃圾收集器介绍篇.了解了G1垃圾收集器的运行机制之后,就可以针对一些GC相关参数来调整内存分配以及运行策略.下文的 ...
- JVM基础 -> G1垃圾收集器
说说G1垃圾收集器 G1概览 G1 GC 全称是Garbage First Garbage Collector,垃圾优先垃圾回收器,以下简称G1. G1是HotSpot JVM的短停顿垃圾回收器. 其 ...
最新文章
- Git的stash操作
- HDU - 1547 Bubble Shooter(dfs+连通块+模拟)
- python带参装饰器的改良版
- lamp配置python_LAMP搭建笔记
- 爱情二十四课,妥协50分
- round - 精确的几位小数
- CrackMe011
- Tensorflow:tensor数据类型转换、计算和变换
- 3. beanstalkd
- 对计算机硬件的工作原理的认识,计算机硬件组成及工作原理
- mysql存储emij表情_【MySQL】存储emoji表情报错(Incorrect string value: '\xF0\x9F\x98\x82\xF0\x9F...')的解决方案...
- xlsread服务器出现意外情况
- 201521123037 《Java程序设计》第6周学习总结
- mac python环境搭建
- setAttribute 和 getAttribute区别
- CentOS8 防火墙设置
- 读书笔记(三)--拜占庭问题
- 大数加法(使用结构体)
- SSL/TLS 双向认证(一) -- SSL/TLS 工作原理
- 第03课:怎么针对微服务架构做单元测试?
热门文章
- 后疫情时代美业系统saas解决线下实体美容院美甲店的困境
- ntohl()、htonl()、ntohs()、htons()函数
- 出道即封神的ChatGPT,现在怎么样了?
- sun 收购 mysql_MySQL创始人:确保收购Sun 甲骨文应售MySQL
- 1.3 DICOM成像协议实现思路
- Webug4.0靶场通关
- 输入界面,关于stretchColumns和selectAllOnFocus的属性设置
- CSS样式的格式命名,CSS命名规范:BEM
- ajax+springboot文件上传
- 【C++札记】标准输入与输出