【jvm】G1垃圾收集器的特点,为什么低延迟

目录

          • 1. 说明
          • 2. 特点
            • 2.1 并行与并发
            • 2.2 分代收集
            • 2.3 空间整合
            • 2.4 可预测的停顿
          • 3. 实现低延迟的原因
            • 3.1 区域化管理
            • 3.2 并发标记
            • 3.3 智能回收
            • 3.4 可预测的暂停时间

1. 说明
  • 1.G1(Garbage First)垃圾收集器是Java虚拟机(JVM)中一款面向服务端应用的垃圾收集器,具有显著的特点和优势,尤其是在低延迟方面表现突出。
  • 2.G1垃圾收集器通过区域化管理、并发标记、智能回收和可预测的暂停时间等机制来实现低延迟暂停。
  • 3.这些机制使得G1能够在不停止整个应用程序的情况下进行垃圾回收,并且根据用户指定的暂停时间来调整回收策略,从而最大程度地减少应用程序的停顿时间。
2. 特点
2.1 并行与并发
  • 1.G1能充分利用多CPU、多核环境下的硬件优势,使用多个CPU或CPU核心来缩短Stop-The-World停顿的时间。
  • 2.部分其他收集器原本需要停顿Java线程执行的GC动作,G1收集器仍然可以通过并发的方式让Java程序继续执行。
2.2 分代收集
  • 1.G1保留了分代概念,但与其他收集器不同的是,G1不需要其他收集器配合就可以管理整个GC堆。
  • 2.它可以通过不同的方法去管理新生代和老年代。
2.3 空间整合
  • 1.G1整体上看是基于“标记-整理”算法实现的收集器,从局部(两个Region之间)上来看是基于“复制”算法实现的。
  • 2.在运作期间不会产生内存碎片空间,有利于程序长时间运行。
2.4 可预测的停顿
  • 1.G1除了追求低停顿外,还能建立可预测的停顿时间模型,能让使用者明确指定在一个长度为M毫秒的时间片段内,消耗在垃圾收集上的时间不得超过N毫秒。
3. 实现低延迟的原因
3.1 区域化管理
  • 1.G1将整个Java堆划分为多个大小相等的独立区域(Region),这些区域在逻辑上是连续的,但物理上不需要连续。
  • 2.这种区域化的管理方式使得G1可以只回收部分区域,而不需要停止整个应用程序的执行,从而降低了应用程序的停顿时间。
3.2 并发标记
  • 1.G1使用并发标记算法来标记存活对象。
  • 2.在垃圾回收过程中,G1会在后台线程中进行对象的标记操作,而不需要停止应用程序的执行。
  • 3.G1可以在应用程序运行的同时进行标记操作,从而减少了应用程序的停顿时间。
3.3 智能回收
  • 1.G1会根据堆内存的使用情况和垃圾回收的需求来智能地选择回收哪些区域。
  • 2.它会优先回收垃圾最多的区域(Garbage-First),以最大程度地提高垃圾回收的效率。
  • 3.这种智能回收的策略可以有效地减少垃圾回收的时间,从而降低了应用程序的停顿时间。
3.4 可预测的暂停时间
  • 1.G1会根据用户指定的目标暂停时间来进行垃圾回收。
  • 2.它会根据应用程序的负载情况和垃圾回收的需求来动态调整回收的区域数量和回收的时间。
  • 3.G1可以在用户指定的暂停时间内完成垃圾回收操作,从而保证了应用程序的低延迟暂停。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/918689.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

远程jupyter lab的配置

打开虚拟环境 conda activate test 在环境下安装ipykernel软件包,这个软件包允许jupyter notebookl使用特定环境的python版本。 conda install ipykernel 将该环境添加到Jupyter Notebook中 python -m ipykernel install --user --nametest --display-name&quo…

C指针之舞——指针探秘之旅

❤博客主页:折枝寄北-CSDN博客 ❤专栏内容:C语言学习专栏https://blog.csdn.net/2303_80170533/category_12794764.html?spm1001.2014.3001.5482 指针基础学习 在之前的博客文章中,简单总结了指针的基础概念 我们知道了指针的概念&#xf…

MATLAB绘制克莱因瓶

MATLAB绘制克莱因瓶 clc;close all;clear all;warning off;% clear all rand(seed, 100); randn(seed, 100); format long g;% Parameters u_range linspace(0, 2*pi, 100); v_range linspace(0, pi, 50); [U, V] meshgrid(u_range, v_range);% Parametric equations for t…

Spring Cloud微服务下如何配置I8n

什么是I8n 国际化(I18n)指的是设计和开发产品的过程,使得它们能够适应多种语言和文化环境,而不需要进行大量的代码更改。这通常涉及到创建一个基础版本的产品,然后通过配置和资源文件来添加对不同语言和地区的支持。 这…

将分割标签数据从JSON格式转换为YOLOv8的TXT格式

AnyLabeling是一款突破性的开源图像标注工具。 一、主要功能与特点 融合传统标注工具优点:AnyLabeling结合了LabelImg和Labelme等传统标注软件的优点,提供了多边形、矩形、圆形、线条和点等多种标注形式,满足不同场景的需求。强大的AI自动标…

【graphics】图形绘制 C++

众所周知,周知所众,图形绘制对于竞赛学僧毫无用处,所以这个文章,专门对相关人员教学(成长中的码农、高中僧、大学僧)。 他人经验教学参考https://blog.csdn.net/qq_46107892/article/details/133386358?o…

Javaweb梳理17——HTMLCSS简介

Javaweb梳理17——HTML&CSS简介 17 HTML&CSS简介17.1 HTML介绍17.2 快速入门17.3 基础标签17.3 .1 标题标签17.3.2 hr标签17.3.3 字体标签17.3.4 换行17.3.8 案例17.3.9 图片、音频、视频标签17.3.10 超链接标签17.3.11 列表标签17.3.12 表格标签17.3.11 布局标签17.3.…

637. 二叉树的层平均值【 力扣(LeetCode) 】

文章目录 零、原题链接一、题目描述二、测试用例三、解题思路四、参考代码 零、原题链接 637. 二叉树的层平均值 一、题目描述 给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10-5 以内的答案可以被接受。 二、测试用例 示例 1&a…

selenium元素定位---元素点击交互异常解决方法

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 1、异常原因 在编写ui自动化时,执行报错元素无法点击:ElementClickInterceptedException 具体报错:selenium.common.exc…

ARM64环境部署EFK8.15.3收集K8S集群容器日志

环境规划 主机IP系统部署方式ES版本CPU架构用户名密码192.168.1.225Ubuntu 22.04.4 LTSdockerelasticsearch:8.15.3ARM64elasticllodyi4TMmZD ES集群部署 创建持久化目录(所有节点) mkdir -p /data/es/{data,certs,logs,plugins} mkdir -p /data/es/certs/{ca,es01}服务器…

搭建MC服务器

局域网中玩MC,直接自己创建房间开启局域网就可以了。如果想开一个24小时不关机的服务器呢?其实最开始我是想在windows云服务器,图形化界面运行一个开启局域网即可。可能是云服务器上没有显卡,还是其他什么原因,游戏打开…

数据结构-二叉搜索树(Java语言)

目录 1.概念 2.查找search 3.插入insert ​编辑4.删除remove(难点) 5.性能分析 1.概念 二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树 : 1.若它的左子树不为空,则左子树上所有节点的值都…

时代变迁对传统机器人等方向课程的巨大撕裂

2020年之后,全面转型新质课程规划,传统课程规划全部转为经验。 农耕-代表性生产关系-封建分配制度主要生产力-人力工业-代表性生产关系-资本分配制度工业分为机械时代,电气时代,信息时代;主要生产力-人力转为人脑&…

【Pikachu】PHP反序列化RCE实战

痛是你活着的证明 1.PHP反序列化概述 在理解 PHP 中 serialize() 和 unserialize() 这两个函数的工作原理之前,我们需要先了解它们各自的功能及其潜在的安全隐患。接下来,我会对相关概念做更详细的扩展解释。 1. 序列化 serialize() 序列化&#xff…

Stable Diffusion概要讲解

🌺系列文章推荐🌺 扩散模型系列文章正在持续的更新,更新节奏如下,先更新SD模型讲解,再更新相关的微调方法文章,敬请期待!!!(本文及其之前的文章均已更新&…

免费开源!DBdoctor推出开源版系统诊断工具systool

​前言 在开发和运维过程中,经常会遇到难以定位的应用问题,我们通常需要借助Linux系统资源监控工具来辅助诊断。然而,系统的IO、网络、CPU使用率以及文件句柄等信息通常需要通过多个独立的命令工具来获取。在没有部署如Prometheus这样的综合…

在openi平台 基于华为顶级深度计算平台 openmind 动手实践

大家可能一直疑问,到底大模型在哪里有用。 本人从事的大模型有几个方向的业务。 基于生成式语言模型的海事航行警告结构化解析。 基于生成式语言模型的航空航行警告结构化解析。 基于生成式生物序列(蛋白质、有机物、rna、dna、mrna)的多模态…

FPGA开发流程

注:开发板:小梅哥的ACX720。本实验可直接运行在小梅哥的ACX720开发板上,后续的实验都可直接运行在小梅哥的ACX720上。 一、打开VIVADO并创建工程 1、双击VIVADO图标,打开vivado。 2、打开vivado界面打,点击有 Create …

【深度学习】wsl-ubuntu深度学习基本配置

配置pip镜像源 这里注意一点,你换了源之后就最好不要开代理了,要不然搞不好下载失败,pip和conda都是 ## 配置中科大镜像 pip config set global.index-url https://mirrors.ustc.edu.cn/pypi/web/simple# 配置阿里源 pip config set global…

基于Cnn神经网络虫害预测

【摘 要】鉴于农业病虫害经济损失的预测具有较强的复杂性和非线性特性,设计了一种新型的GRNN预测模型,对农业病虫害经济损失进行预测。该模型基于人工神经网络捕捉非线性变化独特的优越性,在神经网络技术和江苏省气象局提供的数据的基础上&am…