首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java G1学习笔记

初衷 在G1提出之前,经典的垃圾收集器主要有三种类型:串行收集器、并行收集器和并发标记清除收集器,这三种收集器分别可以是满足Java应用三种不同的需求:内存占用及并发开销最小化、应用吞吐量最大化和应用GC...G1设计了一个标记阈值,它描述的是总体Java堆大小的百分比,默认值是45,这个值可以通过命令-XX:InitiatingHeapOccupancyPercent(IHOP)来调整,一旦达到这个阈值就回触发一次并发收集周期...增加或减少这个值,请确保对总的 Java 堆调整相同的量 10 -XX:G1HeapRegionSize=n 分区的大小 堆内存大小的1/2000,单位是MB,值是2的幂,范围是1MB到32MB之间 -...Garbage-First Garbage Collector 《Java性能权威指南》 《Java性能调优指南》 G1入门,O记官网的PPT Java Hotspot G1 GC的一些关键技术 G1...GC的论文 R大关于G1 GC的帖子 Tips for Tuning the Garbage First Garbage Collector Java性能调优指南 Java性能权威指南 G1: What

1.1K10

简单聊聊G1垃圾回收算法整个流程 --- 理论篇 -- 上

简单聊聊G1垃圾回收算法整个流程 --- 理论篇 -- 上 本文想和大家简单聊聊G1垃圾回收算法的设计思路和具体细节实现,受限于笔者个人实力,可能存在部分错误,如果发现了错误或者有补充说明的,可以在评论区留言或者私信与我讨论...---- 为什么需要 G1 Java 语言目前广泛应用于服务端应用程序的开发,而其中一些场景需要具备软实时性,但是java目前所采用的增量GC或者并发GC,这些GC算法虽然能够缩短最大暂停时间,但是缺点就是会导致吞吐量下降...---- G1 GC 流程 G1 通过 mmap 系统调用向操作系统一次性申请了最大堆内存空间,然后将堆内存划分为大小相等的区域 : G1 以 区域为单位进行GC,用户可以随意设置区域大小,内部会将用户设置的值向上调整为...---- 整体流程 并发标记阶段可以分为如下五个流程: 初始标记阶段 : 暂停所有用户线程执行,标记可由根直接引用的对象。...---- 总结 由于篇幅原因,本文只能将G1的并发标记和转移流程进行简单分析,理论篇下文中将会和各位大家一起来看看G1是如何计算各个区域回收价值的,以及结合分代使用的G1模式。

2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    简单聊聊G1垃圾回收算法整个流程 --- 理论篇 -- 下

    简单聊聊G1垃圾回收算法整个流程 --- 理论篇 -- 下 上一篇 文章我们简单看了一下G1整个垃圾回收流程,但是关于G1如何计算区域回收价值和G1在分代模式下的工作流程这块,由于篇幅限制没有进行说明...这个最大暂停时间并不包含 G1 GC 的并发处理时间。在多处理器环境下,G1 GC 的并发处理时间可以理解成平均分配给用户线程的负载。...区域是分代的 回收集合的选择是分代的 在分代 G1 GC 模式中,区域被分为新生代区域和老年代区域两类。和其他分代 GC 算法一样,分代 G1 GC 的对象也保存了自身在各次转移中存活下来的次数。...另外,分代 G1 GC 模式也分为新生代 GC 和老年代 GC 。...---- 具体转移流程 我们来看一下完全新生代 GC 的执行过程。 完全新生代 GC 不会选择老年代区域,而是将所有新生代区域都选入回收集合,然后转移回收集合内的存活对象。

    61140

    JVM进阶(十一):JAVA G1收集器

    同优秀的CMS垃圾回收器一样,G1也是关注最小时延的垃圾回收器,也同样适合大尺寸堆内存的垃圾收集,官方也推荐使用G1来代替选择CMS。...先讲讲G1收集器的特点,G1收集器也是个多线程的收集器,能够充分利用多个CPU进行工作,收集方式也与CMS收集器类似,因此不会有太久的停顿。 虽然回收的范围是整个堆,但还是有分代回收的回收方式。...事实上,G1收集器与串行收集器、并行收集器、并发标记清除收集器这三组收集器有很大不同: G1的设计原则是”首先收集尽可能多的垃圾(Garbage First)”。...由于都是以相等大小的分区为单位进行操作,因此G1天然就是一种压缩方案(局部压缩); G1虽然也是分代收集器,但整个内存分区不存在物理上的年轻代与老年代的区别,也不需要完全独立的survivor(to space...G1只有逻辑上的分代概念,或者说每个分区都可能随G1的运行在不同代之间前后切换; G1的收集都是STW的,但年轻代和老年代的收集界限比较模糊,采用了混合(mixed)收集的方式。

    31110

    Java 新型垃圾回收器(Garbage First,G1)

    G1目标 G1 is planned as the long term replacement for the Concurrent Mark-Sweep Collector....计划将G1作为CMS收集器的长久替代物。 它是为了平衡 延时和吞吐量之间的一种最优关系。...基本概念 G1 堆布局 G1将堆分成若干固定大小的Region/区域(区域大小只有1、2、4、8、16和32M),G1的新生代和老年代都是一个无需连续的区域集合,每一个区域独立进行内存的分配和回收,区域是内存管理的基本单元...这个阶段由多个混合的收集动作组成,不仅包含新生代区域,同时也会排除老年代区域的存活对象,当G1发觉依然无法满足空闲的空间请求时,G1会终止本阶段。...G1 Vs. 传统垃圾回收器 G1 不区分新/老生代,只区分Region G1 收集分2个阶段Young-only 和Space-reclamation

    60920

    Java 垃圾收集器详解:CMS, G1, ZGC

    Java 虚拟机(JVM)内置的垃圾收集机制是 Java 程序能够自动管理内存的关键。随着 Java 应用程序规模的增长和技术的进步,垃圾收集器的设计也在不断演进,以满足更高性能、更低延迟的需求。...本文将详细介绍 CMS、G1 和 ZGC 这三种垃圾收集器,并提供一个详细的对比表格。...这种设计使得 G1 能够更好地预测和控制 GC 停顿时间。 特点 分区式回收:G1 将堆划分为多个小块,每一块都可以独立地被回收。...命令行参数 启动 JVM 并指定使用 G1 收集器可以通过以下参数: java -XX:+UseG1GC -Xms200m -Xmx200m -jar yourapp.jar ZGC(Z Garbage...-Xmx200m -jar yourapp.jar G1 java -XX:+UseG1GC -Xms200m -Xmx200m -jar yourapp.jar ZGC java -XX:+UnlockExperimentalVMOptions

    12510

    神奇的G1——Java全新垃圾回收机制

    G1全称是Garbage First Garbage Collector,使用G1的目的是简化性能优化的复杂性。例如,G1的主要输入参数是初始化和最大Java堆大小、最大GC中断时间。...上面的描述是关于老年代收集器的流程描述,简要说明就是Initial-Mark-> Concurrent Root Region scanning->Concurrent Marking-> Remarking...因为G1的操作以Region为基础,因此它适用于大Java堆。即便Java堆很大,大量的GC工作可以被限制在小型Region集合里面。...G1允许用户指定停顿时间目标,G1通过自适应的堆大小来满足这个目标。 ※G1 GC深度原理 G1把整个Java堆划分为若干个区间(Regions)。...如果没有连续的可用Regions,G1会做一个Java heap的full gc去压缩对象。

    2.5K10

    深入理解JavaG1垃圾回收器

    摘要 本文旨在深入探讨Java虚拟机(JVM)中的G1垃圾回收器,包括其工作原理、性能特点、配置调优以及实际使用中的代码示例。...G1垃圾回收器以其并行与并发能力、停顿时间可预测性在高性能Java应用中备受青睐。 一、引言 简要介绍Java的垃圾回收机制,以及为何需要不同类型的垃圾回收器来满足不同应用场景的需求。...四、G1垃圾回收器的配置与调优 提供配置G1垃圾回收器的JVM参数建议,如: -XX:+UseG1GC:启用G1垃圾回收器。 -Xmx 和 -Xms:设置Java堆的最大和初始大小。...讨论如何通过调整这些参数来优化G1的性能,以满足特定应用的需求。 五、代码示例与实践 提供一些简单的Java代码示例,演示如何在实际应用中使用和监控G1垃圾回收器。...小结 G1(Garbage-First)垃圾回收器是Java HotSpot虚拟机中的一种,主要用于服务端应用。它设计的主要目标是满足具有大内存容量的多核处理器的系统需求,并能提供较高的吞吐量。

    51910

    Java11 的 G1 垃圾收集器

    所以 G1 通过记忆集的形式记录了老年代对新生代的引用。具体在 G1 中通过 CarTable 来实现记忆集。 RSet(记忆集) 记录了其它 Region 中的对象到 Region 的引用。...参考:https://sdww2348115.github.io/jvm/g1/PausePredictionModel G1 垃圾收集周期 图片来源 Oracle 官网 G1 有两个阶段,它会在这两个阶段往返...G1 在每一次 Young 回收中都会查找活对象 (有引用的对象) G1 在 old region 并发查找存活对象 是 Concurrent Marking 可能花费很长时间 不会停止 Java 应用...GC 日志分析 下面是网上找的一个 GC 日志案例,解析如下(配合 G1 垃圾收集周期结合来看): [gc,start ] GC(44265) Pause Young (Normal) (G1.../4273516/blog/4550072 【跨代引用】 https://blog.csdn.net/weixin_47184173/article/details/113627337 【空闲时自动将Java

    44120

    java9系列(九)Make G1 the Default Garbage Collector

    序 本文主要研究下JEP 248: Make G1 the Default Garbage Collector 默认垃圾收集器 java9废弃了CMS垃圾收集器,并把G1提升为默认垃圾收集器,替代了原来的吞吐优先的...目标是根据最小的Java堆大小划分出约2048 个区域. Humongous Object/ Humongous区域 对于G1 GC,任何超过区域一半大小的对象都被视为“巨型对象”。...默认值是Java堆的10% -XX:G1MixedGCCountTarget=8 设置标记周期完成后,对存活数据上限为 G1MixedGCLIveThresholdPercent 的旧区域执行混合垃圾回收的目标次数...增加或减少百分比时,请确保对总的Java 堆调整相同的量 避免使用-Xmn选项或-XX:NewRatio等其他相关选项显式设置年轻代大小,固定年轻代的大小会禁用掉暂停时间(MaxGCPauseMillis...深入理解 Java G1 垃圾收集器 Java 9中的GC调优基础 Java Hotspot G1 GC的一些关键技术 Garbage First G1收集器 理解和原理分析 Tuning Java Garbage

    81320

    JVM - G1初探

    ---- G1的内存分区 ? G1Java堆内存划分为多个大小相等的独立区域(Region),JVM最多可以有2048个Region。 一般一个Region的大小 = 堆内存/2048 ....G1在淡化分代理论上还不是很彻底, G1保留了年轻代和老年代的概念,但不再是物理隔阂了,它们是(可以不连续)Region的集合。...部分其他收集器原本需要停顿Java线程来执行GC动作,G1收集器仍然可以通过并发的方式让java程序继续执行。...可预测的停顿:这是G1相对于CMS的另一个大优势,降低停顿时间是G1 和 CMS 共同的关注点,但G1 除了追求低停顿外,还能建立可预测的停顿时间模型,能让使用者明确指定在一个长度为M毫秒的时间片段(通过参数...www.oracle.com/technetwork/tutorials/tutorials-1876574.html https://www.oracle.com/technical-resources/articles/java

    83630

    Java 流程控制

    Java 主要的流程控制语句有3钟,选择语句,循环语句,跳转语句。...Java 中的作用域,是一对用花括号括起来的,块定义了变量使用的范围,   各个块之间可以嵌套,在块中声明的变量只有在当前块才能有作用。     ...循环语句     Java 中常用的循环有3 种形式 for, while 和 do-while 循环。       ...while 循环语句       Java 种最基本的循环语句       while(条件){           // 循环体       }       public class Demo4       ...("1 到 100 各个整数的和:"+ sum)         }       }     // 程序运行如下       1 到 100 各个整数的和:5050     跳转语句       Java

    82470

    Java后端学习流程

    Java基础语法Java语法格式,常量和变量,变量的作用域,方法和方法的重载,运算符,程序流程控制,数组和操作数组的类,对数组循环遍历以及针对数组的常用查找、排序算法原理,最后使用Java程序进行功能实现...Javascript了解javascript的基本语法以及相关函数的使用,并结合html页面实现流程控制和页面效果展示。...OA工作流技术JBPM工作流是什么、JBPM介绍、JBPM的主要用法、各类节点的用法、任务各种分派方式、JBPM的整体架构原理、工作流定义模型分析、运行期工作流实例模型分析、数据库表模型分析、流程定义管理...、流程实例监控、对JBPM的相关接口进行封装,构建自己的工作流应用平台等。...CRM项目实战此项目能了解和熟悉客户关系管理的基本流程以及功能的实现,采用上面几个阶段学到的主流框架实现,同时加入了JBPM的技术。

    1.5K21

    Java基础:Java流程控制

    ~ 本篇主要记录内容包括:块作用域、分支结构、循环语句与、中断控制流程语句 ---- 上一篇内容:Java基础:Java数字类型 下一篇内容:Java基础:Java类与对象 更多知识学习:全网最全的...Java 技术栈内容梳理(持续更新中) ---- 文章目录 一、Java 代码块 1、块作用域 2、代码块分类 3、构造方法与代码块执行顺序 二、Java 分支结构 1、条件语句 2、多重选择:switch...语句 3、三元运算符 三、Java 循环语句 1、while 循环语句与 do-while 语句 2、for 循环语句 3、foreach 循环语句 四、Java 中断控制流程语句 ---- 一、Java...Java 有一个与 C/C++ 完全一样的 switch 语句。...四、Java 中断控制流程语句 break 关键字:break 主要用在循环语句或者 switch 语句中,用来跳出整个语句块。 break 跳出最里层的循环,并且继续执行该循环下面的语句。

    92550

    CMS和G1

    G1收集器 Garbage First收集器,首次提出了局部收集的设计思路和基于Region的内存布局。 对于G1来说,其每次收集的区域不再是整个年轻代、老年代或者整个堆。...CMS和G1的比较 G1替换掉CMS已经成为不可逆转的趋势,下面就G1为何比CMS优秀加以说明: 1)G1基于Region的局部回收避免了全堆进行垃圾回收,再加上其按照动态受益确定回收集极大的提升了回收效率...2)G1总体上采用的是标记-整理算法,局部(region之间)采用的是标记-复制算法,与CMS的标记-清除算法相比,其不会产生内存碎片。...G1也存在他的缺点: G1的卡表所占的空间巨大,由于每个Region都要拥有一张卡表,如此导致记忆集要占20%左右的堆空间,而CMS中只需要维护老年代指向新生代的一张卡表即可。

    91431
    领券