当前位置: 首页 > news >正文

JVM(day2)经典垃圾收集器

经典垃圾收集器

Serial收集

使用一个处理器或一条收集线程去完成垃圾收集工作,更重要的是强调在它进行垃圾收集时,必须暂停其他所有工作线程,直到它收集结束。

ParNew收集器

ParNew 收集器除了支持多线程并行收集之外,其他与 Serial 收集器相比并没有太多创新之处,但它
却是不少运行在服务端模式下的 HotSpot 虚拟机,尤其是 JDK 7 之前的遗留系统中首选的新生代收集器,其中有一个与功能、性能无关但其实很重要的原因是:除了Serial 收集器外,目前只有它能与 CMS收集器配合工作。

Parallel Scavenge收集器

同样是基于标记-复制算法实现的收集器,也是能够并行收集的多线程收集器,Parallel Scavenge收集器的特点是它的关注点与其他收集器不同,CMS等收集器的关注点是尽可能 地缩短垃圾收集时用户线程的停顿时间,而Parallel Scavenge收集器的目标则是达到一个可控制的吞吐量(Throughput)。所谓吞吐量就是处理器用于运行用户代码的时间与处理器总消耗时间的比值

Serial Old收集器

Serial Old Serial 收集器的老年代版本,它同样是一个单线程收集器,使用标记 - 整理算法。

Parallel Old收集器

Parallel Old Parallel Scavenge 收集器的老年代版本,支持多线程并发收集,基于标记 - 整理算法实现

CMS收集器(重点1)

CMS Concurrent Mark Sweep )收集器是一种以获取最短回收停顿时间为目标的收集器。目前很
大一部分的 Java 应用集中在互联网网站或者基于浏览器的 B/S 系统的服务端上,这类应用通常都会较为关注服务的响应速度,希望系统停顿时间尽可能短,以给用户带来良好的交互体验。CMS 收集器就非常符合这类应用的需求。
从名字(包含 “Mark Sweep” )上就可以看出 CMS 收集器是基于标记 - 清除算法实现的,它的运作
过程相对于前面几种收集器来说要更复杂一些,整个过程分为四个步骤:

由于在整个过程中耗时最长的并发标记并发清除阶段中,垃圾收集器线程都可以与用户线程一
起工作,所以从总体上来说, CMS 收集器的内存回收过程是与用户线程一起并发执行

其中初始标记重新标记这两个步骤仍然需要 “Stop The World” 。初始标记仅仅只是标记一下 GC

Roots能直接关联到的对象,速度很快;并发标记阶段就是从GC Roots的直接关联对象开始遍历整个对象图的过程,这个过程耗时较长但是不需要停顿用户线程,可以与垃圾收集线程一起并发运行;而重新标记阶段则是为了修正并发标记期间,因用户程序继续运作而导致标记产生变动的那一部分对象的标记记录,这个阶段的停顿时间通常会比初始标记阶段稍长一些,但也远比并发标记阶段的时间短;最后是并发清除阶段,清理删除掉标记阶段判断的已经死亡的对象,由于不需要移动存活对象,所以这个阶段也是可以与用户线程同时并发的。

CMS 是一款优秀的收集器,它最主要的优点在名字上已经体现出来:并发收集低停顿,一些官
方公开文档里面也称之为 并发低停顿收集器 Concurrent Low Pause Collector )。
三个缺点:
1. CMS 收集器对处理器资源非常敏感
2.由于 CMS 收集器无法处理 浮动垃圾 Floating Garbage
3.CMS 是一款基于 标记 - 清除 ”算法实现的收集器,会有大量空间碎片产生。

G1收集器(重点2)

它开创了收集器面向局部收集的设计思路和基于Region的内存布局形式。

G1是一款主要面向服务端应用的垃圾收集器。 

G1 开创的基于 Region 的堆内存布局是它能够实现这个目标的关键。虽然 G1 也仍是遵循分代收集理
论设计的,但其堆内存的布局与其他收集器有非常明显的差异: G1 不再坚持固定大小以及固定数量的分代区域划分,而是把连续的Java 堆划分为多个大小相等的独立区域( Region ,每一个 Region 都可以 根据需要,扮演新生代的 Eden 空间、 Survivor 空间,或者老年代空间。收集器能够对扮演不同角色的Region采用不同的策略去处理,这样无论是新创建的对象还是已经存活了一段时间、熬过多次收集的旧对象都能获取很好的收集效果。

相关文章:

JVM(day2)经典垃圾收集器

经典垃圾收集器 Serial收集 使用一个处理器或一条收集线程去完成垃圾收集工作,更重要的是强调在它进行垃圾收集时,必须暂停其他所有工作线程,直到它收集结束。 ParNew收集器 ParNew 收集器除了支持多线程并行收集之外,其他与 …...

华为od机试真题 — 分披萨(Python)

题目描述 “吃货”和“馋嘴”两人到披萨店点了一份铁盘(圆形)披萨,并嘱咐店员将披萨按放射状切成大小相同的偶数个小块。 但是粗心服务员将披萨切成了每块大小都完全不同奇数块,且肉眼能分辨出大小。 由于两人都想吃到最多的披萨,他们商量…...

ubuntu22.04 安装boost

下载boost压缩包,我这里上传了一份1_81_0版本tar -xzvf boost_1_81_0.tar.gzcd boost_1_81_0/sudo apt install build-essential g autotools-dev libicu-dev libbz2-dev -ysudo ./bootstrap.sh --prefix/usr/./b2sudo ./b2 install 上述7步完成后,相关…...

基于JAVA+SpringBoot+uniapp的心理小程序(小程序版本)

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、SpringCloud、Layui、Echarts图表、Nodejs、爬…...

C语言 ——— 输入两个正整数,求出最小公倍数

目录 何为最小公倍数 题目要求 代码实现 方法一:暴力求解法(不推荐) 方法二:递乘试摸法(推荐) 何为最小公倍数 最小公倍数是指两个或者多个正整数(除了0以外)的最小的公共倍数…...

Langchain 对pdf,word,txt等不同文件的加载解析

项目中遇到各种数据资源想要加载近langchain构建本地知识ai系统,怎么加载对应的文件格式呢,一起研究下 引入Langchain from langchain.document_loaders import UnstructuredWordDocumentLoader,PyPDFium2Loader,DirectoryLoader,PyPDFLoader,TextLoad…...

BL201分布式I/O耦合器连接Profinet网络

钡铼技术的BL201分布式I/O耦合器是一个用于Profinet网络的设备,用于连接远程输入/输出(I/O)设备到控制系统,如可编程逻辑控制器(PLC),能够实现分布式的I/O连接和通信。 它支持标准Profinet IO …...

Pycharm 报错 Environment location directory is not empty 解

删除项目中ven文件夹(已存在的),然后再添加新的ven虚拟环境就可以了...

【Android】Intent基础用法及作用

文章目录 使用Intent在活动中穿梭组成显式Intent隐式Intent显式与隐式区别作用 活动间传递数据向下一个活动传递数据返回数据给上一个活动 使用Intent在活动中穿梭 Intent(意图)是一种重要的消息传递对象,用于在不同组件(如活动&…...

Web开发:ASP.NET CORE的后端小结(基础)

1.后端重定向到指定路由 public IActionResult Index(){return RedirectToAction("Index", "Main");//重定向>Main/Index} 【备注】如果在MainController的Index方法中return View();本质是 return View("Index"),返回和方法同名的…...

侧开知识点合集2

一、try .... catch.. AccessViolationException异常触发后,下列程序的输出结果为 static void Main(string[] args) { try { throw new AccessViolationException(); Console.WriteLine("error1"); } catch (Exception e) { Console.WriteLi…...

ARM/Linux嵌入式面经(十六):蔚来嵌入式一二三面面经

文章目录 static作用,局部static和全局static区别TCP三次握手Linux虚拟内存指针引用区别C++内存分区new/delete和malloc/free区别职业规划为什么选择蔚来介绍一下项目然后问我有没有内核级别开发经验,我说没有什么情况进入内核态一、主动式二、被动式三、其他方式注意事项示例…...

Apache BookKeeper 一致性协议解析

导语 Apache Pulsar 是一个多租户、高性能的服务间消息传输解决方案,支持多租户、低延时、读写分离、跨地域复制(GEO replication)、快速扩容、灵活容错等特性。Pulsar 存储层依托于 BookKeeper 组件,所以本文简单探讨一下 BookK…...

Solana的账户模型

Solana的账户模型与其他区块链平台(如以太坊)有所不同,其设计旨在提高性能和扩展性。以下是Solana账户模型的主要特点和工作原理: Solana账户模型概述 账户类型: 普通账户(User Accounts)&…...

iPython与Matplotlib:数据可视化的秘籍

iPython与Matplotlib:数据可视化的秘籍 前言 欢迎来到"iPython与Matplotlib:数据可视化的秘籍"教程!无论你是数据可视化新手还是希望提升技能的专业人士,这里都是你开始的地方。让我们开始这段数据可视化之旅吧&#…...

做一只勤劳的小蜜蜂

机缘 成为创作者的初心,对我而言,是一个融合了个人兴趣、职业成长以及对知识传播热爱的复杂而纯粹的情感交织。回顾这段旅程的起点,几个核心驱动力始终引领着我前行: 1、记录与反思:在职业生涯的早期,我遇…...

如何处理 PostgreSQL 中死锁的情况?

🍅关注博主🎗️ 带你畅游技术世界,不错过每一次成长机会!📚领书:PostgreSQL 入门到精通.pdf 文章目录 如何处理 PostgreSQL 中死锁的情况?一、认识死锁二、死锁的症状三、死锁的检测四、预防死锁…...

新版本 idea 创建不了 spring boot 2 【没有jkd8选项】

创建新项目 将地址换成如下 https://start.aliyun.com/...

linux系统和windows系统如何同步时间,服务器时间变动怎么同步

一、Linux系统时间同步 1. 使用NTP(网络时间协议) NTP是最常用的Linux系统时间同步方式。NTP通过连接到外部时间服务器(如原子钟或GPS接收器)来获取高精度的时间信息,并校准本地系统时间。 步骤: 安装N…...

Mac M1安装配置Hadoop+Flink SQL环境

Flink 1.18.1 Hadoop 3.4.0 一、准备工作 系统:Mac M1 (MacOS Sonoma 14.3.1) JDK:jdk1.8.0_381 (注意:尽量一定要用JDK8,少用高版本) Scala:2.12 JDK安装在本机的/opt/jdk1.8.0_381.jdk/C…...

【所谓生活】马太效应

简介 马太效应又称马太定律或两级分化现象。该效应描述的是在社会生活中,强者因为优势而获得更多机会,而弱者因劣势而失去机会,最终导致强者愈强、弱者愈弱的现象。这一概念最早由美国社会学家罗伯特莫顿于1968年提出,其名字来源…...

品牌进行电商数据采集的流程

品牌在进行数据分析与渠道管控时,均离不开电商数据的有力支撑,故而数据采集的质量举足轻重。电商数据采集首先要确保准确率,其次要保障覆盖率,即页面上呈现的商品信息必须采集完整,否则难以得出精确的数据分析成果&…...

面试问题:React基本概念,和所遇到的CPU和IO问题

在官方文档里面可以看见React基本设计概念,React是用 JavaScrip构建快速响应的大型Web应用程序的首选方式,但是快速响应用一定的是依赖,CPU的性能和IO的约束。 首先CPU性能原因:大部分浏览器的刷新频率为60HZ,及16.6ms…...

FOG Project 文件名命令注入漏洞复现(CVE-2024-39914)

0x01 产品简介 FOG是一个开源的计算机镜像解决方案,旨在帮助管理员轻松地部署、维护和克隆大量计算机。FOG Project 提供了一套功能强大的工具,使用户能够快速部署操作系统、软件和配置设置到多台计算机上,从而节省时间和精力。该项目支持基于网络的 PXE 启动、镜像创建和还…...

JavaScript 表单

JavaScript 表单 JavaScript 是一种广泛应用于网页开发的编程语言,它能够让网页变得更加动态和交互式。在网页设计中,表单是一个重要的组成部分,它允许用户输入数据并将其提交到服务器。JavaScript 可以用来增强表单的功能,提供更好的用户体验。本文将详细介绍如何使用 Ja…...

python程序设定定时任务

在 Windows 系统上,您可以使用任务计划程序(Task Scheduler)来设置定时任务,执行 Python 文件。以下是具体步骤: 步骤 1:准备 Python 文件 假设有一个名为 script.py 的 Python 脚本。确保它可以在命令行中正确运行。 步骤2:找到Python可执行文件的位置 知道Python可…...

win10 查看 jks 的公钥

1.使用 keytool 导出jks文件的 crt 文件 先查询别名 keytool -list -keystore oauth2.jks -storepass [你的密钥库密码] 导出crt 文件 keytool -exportcert -alias oauth2 -keystore oauth2.jks -file 777.crt 2.查看公钥 打开PowerShell # 设置.crt文件的路径 $ce…...

蓝牙模块在智能体育设备中的创新应用

随着科技的飞速发展,智能体育设备已经成为现代体育训练和健身的重要组成部分。蓝牙模块作为智能体育设备中的核心技术之一,其创新应用不仅提升了设备的智能化水平,也为运动员和健身爱好者带来了前所未有的便利和体验。本文将探讨蓝牙模块在智…...

智能家居和智能家电有什么区别?

智能家居和智能家电在定义、涵盖范围、功能特点以及系统集成度等方面存在显著区别。 一、定义 智能家居:智能家居是指通过物联网技术、人工智能技术等先进技术,将家居设备与互联网连接起来,实现智能化控制和管理的一种新型生活方式。它不仅…...

SpringBoot3 + Vue3 学习 Day 1

springboot 基础 和 注册接口的开发 学习视频基础SpringBoot 概述快速启动配置文件基本使用① application.properties② application.yml (更好) yml 配置信息的书写和获取yml 配置信息书写与获取 1 - Valueyml 配置信息书写与获取 2 - ConfigurationPr…...

2018做网站前景好么/正规教育培训机构

思路:回顾了下网络流中最简单暴力的一个方法:Ford-Fulkerson算法。 本文不再讲解具体算法原理,直接上代码(我这里采用的邻接矩阵,希望各位不要学我,还是用邻接表比较稳哦): #inclu…...

怎样建网站 步骤/葫岛百度seo

为了避免更matlab自带的libsvm冲突,这里把lsvmtrain.mexw64改成libsvm_svmtrain.mexw64。代码如下:data[176 70;180 80;161 45;163 47];label[1;1;-1;-1];modellibsvm_svmtrain(label, data);%此处用libsvm_svmtrain,不是svmtraintestdata[19…...

网站建设管理 优帮云/企业网络推广的方式有哪些

我们将陆地区域全部染色一般,如果走到边界,那么就说明不可能被包围,否则就会被包围。注意在BFS不能提前返回,否则我们就没有完全染色。 const int dx[] {0, 1, -1, 0}; const int dy[] {1, 0, 0, -1}; class Solution { public…...

网站怎么做短信接口/武汉做搜索引擎推广的公司

分析比较执行时间计划读取情况1. 查看执行时间和cpu set statistics time on select * from Bus_DevHistoryData set statistics time off 执行后在消息里可以看到 2. 查看查询对I/O的操作情况 set statistics io on select * from Bus_DevHistoryData set statistics io off 执…...

怎么看个人做的付费视频网站/深圳seo云哥

目录 正则表达式语法规则 字符 预定义字符集 数量词 贪婪和非贪婪 边界匹配(不消耗匹配字符串中的字符) 逻辑、分组 Python re模块介绍 引入模块 正则检索 正则分割字符串 字符串替换 分组引用 匹配中文 正则表达式语法规则 百度百科简介&#xff1a…...

b2b平台的盈利模式/谷歌seo外链平台

本文转载,原文地址: 分享:个人是怎么学习新知识的...