JVM虚拟机系统性学习-垃圾回收器Serial、ParNew、Parallel Scavenge和Parallel Old

垃圾回收器

有 8 种垃圾回收器,分别用于不同分代的垃圾回收:

  • 新生代回收器:Serial、ParNew、Parallel Scavenge
  • 老年代回收器:Serial Old、Parallel Old、CMS
  • 整堆回收器:G1、ZGC

Serial:串行回收

  • Serial是最基本、最古老的垃圾收集器

  • Serial收集器采用复制算法、单线程执行和 “STW” 机制的方式进行内存回收

  • 除了年轻代之外,Serial 收集器还提供了用于执行老年代垃圾收集的 Serial Old 收集器。Serial Old 同样采用串行回收和 “STW” 机制,只不过内存回收算法使用的是标记-压缩算法。

  • 优势

    • 简单高效(与其他收集器的单线程相比),在垃圾收集时暂停了用户线程,专心回收内存,因此单线程效率很高
  • 缺点

    • 垃圾回收时,有STW时间,不适用于交互性强的应用程序
  • 应用场景

    • 可以在Client模式下的虚拟机运行
    • 在用户的桌面应用场景中,可用内存一般不大(几十MB至上百MB),可以在较短时间内完成垃圾收集

在这里插入图片描述

ParNew:并行回收

  • Par指Parallel,New指处理新生代的垃圾收集
  • ParNew在新生代采用并行回收、复制算法、STW机制回收内存
  • ParNew是很多 JVM 运行在 Server 模式下新生代的默认垃圾收集器

ParNew + SerialOld 配合使用,ParNew 回收新生代,并行更高效,老年代回收次数少,使用串行更节省资源

在这里插入图片描述

Parallel Scavenge:吞吐量优先

  • Parallel Scavenge 收集器采用复制算法、并行回收和STW机制进行内存回收
  • Paralle 收集器和 ParNew 收集器是否重复呢?
    • 不是。Parallel Scavenge 收集器的目标是达到一个可控制的吞吐量,他也被称为吞吐量优先的垃圾收集器
    • 自适应调节策略也是 Parallel 与 ParNew 一个重要区别
      • 自适应调节策略即 Parallel 收集器自动调整 年轻代的大小、Eden 和 Survivor 的比例、晋升老年代的对象年龄等参数,为了更好的平衡堆大小、吞吐量和停顿时间
  • 高吞吐量可以高效地利用 CPU 时间,尽快完成程序的运算任务,主要适合在后台运算不需要太多交互的任务

在这里插入图片描述

Parallel Old:吞吐量优先

  • Parallel Scavenge 收集器在 JDK1.6 时提供了用于回收老年代的 Parallel Old 收集器,用来代替老年代的 Serial Old 收集器
  • Parallel Old 收集器采用了标记-压缩算法、并行回收和STW机制回收老年代内存

在这里插入图片描述

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

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

相关文章

圣诞节酷炫特效合集【含十几个HTML+CSS前端特效+34个桌面酷炫圣诞程序】

写在前面 ❤️源码获取:订阅后见文末 ❤️内容介绍:包含HTML+CSS等十几个圣诞特效;以及三十四个桌面酷炫圣诞树合集 ❤️订阅后所得如下: ❤️HTML圣诞+桌面圣诞程序效果如下: 下方展示代码仅举例其中几个 所有效果源码及文件订阅后找博主获取即可 🎄css3圣诞雪人动…

git分支查询与回退(终端命令行方式)

必要性 git的记录查询与回退是开发者必须会的一个要素,因为很少有人能做到代码管理没有任何问题 而且就算你能做到,你也需要会查询与回退分支 查询所有记录 当你在开发的时候,你突然想查看自己之前的提交记录,你可以使用下面这个命令 git log 虽然一下只会展示一小部分,但…

【Python】__init__.py文件的使用

原文作者:我辈李想 版权声明:文章原创,转载时请务必加上原文超链接、作者信息和本声明。 文章目录 前言一、__init__.py文件1.不创建__init__.py文件2.创建__init__.py文件 二、使用1.设置公共参数2.写from .** import **3.__all__ import * …

NXP应用随记(二):S32K3xx内存随记

目录 1、TCM 1.1、代码放置在ITCM的方式 __attribute__ 的函数属性 __attribute__ 的变量属性 __attribute__ 的类型属性 __attribute__ 的优化控制属性 1.2、DTCM 1.3、TCM的使用注意事项 1、TCM CMTightly Coupled Memory,是一种高速缓存,据说是…

[HTML]Web前端开发技术2(HTML5、CSS3、JavaScript )格式化文本标记,定义列表,<blockquote>,definition description,ruby——喵喵画网页

希望你开心,希望你健康,希望你幸福,希望你点赞! 最后的最后,关注喵,关注喵,关注喵,大大会看到更多有趣的博客哦!!! 喵喵喵,你对我真的…

深圳移动与大富科技助力深圳人工智能教育高质量发展

12月12日,中国移动通信集团广东有限公司深圳分公司(以下简称“深圳移动”) 与大富科技(安徽)股份有限公司(以下简称“大富科技”)在中国移动深圳信息大厦签署“战略合作框架协议”,共同推进人工智能教育、I…

CanEasy多场景应用,让汽车总线测试更简单

来源:虹科汽车电子 虹科分享 | CanEasy多场景应用,让汽车总线测试更简单 原文链接:https://mp.weixin.qq.com/s/ojic4xfVTLbxXcKlJMGQZw 欢迎关注虹科,为您提供最新资讯! 导读 CanEasy是一个基于Windows的总线工具&…

Linux 高级管理,安装MySQL数据库

1.准备工作 (1)为了避免发生端口冲突,程序冲突等现象,建议先查询MySQL软件的安装情况,确认没有 使用以RPM方式安装的mysql-server、mysql软件包,否则建议将其卸载。 [rootnode01 ~]# rpm -q mysql-server…

安全算法(一):安全技术、加密的基础知识、哈希函数的简单介绍

安全算法(一):安全技术、加密的基础知识、哈希函数的简单介绍 通过互联网交换数据时,数据要经过各种各样的网络和设备才能传到对方那里。数据在传输过程中有可能会经过某些恶意用户的设备,从而导致内容被盗取。 因此…

智慧储能数字孪生:能源未来的智慧引擎

随着社会对清洁能源的需求不断增加,智能储能技术成为能源转型的关键驱动力。在这一领域中,数字孪生技术的应用为智慧储能带来了全新的可能性。数字孪生是指数字化、实时、可视化的模拟系统,通过复制现实世界中的对象或过程,为智能…

nestjs守卫校验jwt

目标 部分接口需要用户登录后才可以访问,用户登录后可以颁发 jwt_token 给前端,前端在调用需要鉴权的接口,需要在请求头添加 jwt_token,后端校验通过才能继续访问,否则返回403无权访问 创建守卫 anth 安装依赖 npm…

数据库设计规范编制文档

本文的目的是提出针对Oracle数据库的设计规范,使利用Oracle数据库进行设计开发的系统严格遵守本规范的相关约定,建立统一规范、稳定、优化的数据模型。 参照以下原则进行数据库设计: 1) 方便业务功能实现、业务功能扩展; 2) 方便设…

OpenTiny Vue 组件库3.12.0 发布:文档大优化!增加水印和二维码两个新组件

非常高兴跟大家宣布,2023年11月30日,OpenTiny Vue 发布了 v3.12.0 🎉。 OpenTiny 每次大版本发布,都会给大家带来一些实用的新特性,10.24 我们发布了 v3.11.0 版本,增加了富文本、ColorPicker 等4个新组件…

Linux中的权限问题【详解】

shell命令以及运行原理 Windows以图形化界面为主要交互方式,简单高效,易于日常使用。Linux以命令行界面为主要交互方式,操作相较windows,mac来说比较困难一些,但linux也有向着图形化界面努力的桌面系统,例…

庙算兵棋推演平台配置

9月23开始,9月26完成。因为那时刚从大连回来,十一之后又一个紧急项目当项目负责人,所以隔了这么久才发出来。 我尝试进行制作平台AI,想在我的小平板上配好,最好还可以移植。于是我采用WSL(windows自带的do…

AWS-CDN只能备用域名访问-使用Lambda@Edge(禁止分配的域名访问)

场景:cdn使用备用域名后,希望用户只能从备用域名访问,而不是自动分配的cdn域名,这也将是一个安全漏洞,被扫描到cdn域名访问刷流量等! 【建议部署前查看】参考链接: 1.官方cdn返回示例 2.lambdae…

机器人纯阻抗控制接触刚性环境(阻尼影响因素)

问题描述 在机器人学中,阻抗控制是一种常用的控制策略,用于管理机器人在与环境交互时的运动和力。阻抗控制背后的关键概念是将环境视为导纳,而将机器人视为阻抗。 纯阻抗控制接触刚性环境时,机器人的行为方式主要受其阻抗参数的…

统信UOS使用4种方法重置用户密码

原文链接:统信UOS使用4种方法重置用户密码 hello,大家好啊,今天我要给大家介绍的是在统信UOS操作系统上使用4种不同方法来重置用户密码。我们都知道,在日常使用中,偶尔会忘记密码,尤其是在使用多个账户的情…

Leetcode—222.完全二叉树的节点个数【简单】

2023每日刷题(五十八) Leetcode—222.完全二叉树的节点个数 实现代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(null…

进程调度的题解

目录 原题大意: 题目描述: 输入格式: 输出格式: 样例输入: 样例输出: 数据规模: 题目大意: 主要思路: dp的转移: dp初始化: 代码&…