JVM中分代回收机制

news2024/11/16 6:03:19

为什么要分为新生代和老年代?

分为新生代(Young Generation)和老年代(Old Generation)是为了更有效地管理和优化内存的使用。

新生代主要存放生命周期较短的对象,例如方法的局部变量、临时变量等。由于这些对象的生命周期较短,大部分会很快进行垃圾回收。新生代被划分为Eden空间和两个Survivor空间(通常是From和To),新创建的对象首先被分配到Eden空间,经过一次Minor GC,仍然存活的对象会被移到Survivor空间,然后经过多次Minor GC,最终存活的对象会被晋升到老年代。

老年代主要存放生命周期较长的对象,例如静态变量、全局变量等。老年代的垃圾回收频率较低,因为这些对象的生命周期相对长,不容易被清理。当内存不足时,会触发一次Major GC(Full GC),对整个堆进行垃圾回收,清理未被引用的对象。

通过将新生代和老年代区分开来,可以采用不同的垃圾回收策略和频率,以提高垃圾回收的效率和性能。对于新生代,采用复制算法(Copying)进行垃圾回收,只需扫描一部分内存,效率较高。而老年代采用标记-清除-整理算法(Mark-Sweep-Compact),需要对整个老年代进行扫描和整理,效率较低,但可以更好地释放连续的内存空间。

新生代和老年代的工作机制?

对象首先分配在伊甸园区域

 

新生代空间不足时,触发 minor gc,伊甸园和 from 存活的对象使用 copy 复制到 to 中

 

存活的对象年龄加 1并且交换 from to

minor gc 会引发 stop the world,暂停其它用户的线程,等垃圾回收结束,用户线程才恢复运行

当对象寿命超过阈值时,会晋升至老年代,最大寿命是15(4bit)

 

当老年代空间不足,会先尝试触发 minor gc,如果之后空间仍不足,那么触发 full gc,STW的时 间更长

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

奥威BI财务数据分析方案:借BI之利,成就智能财务分析

随着智能技术的发展,各行各业都走上借助智能技术高效运作道路,财务数据分析也不例外。借助BI商业智能技术能够让财务数据分析更高效、便捷、直观立体,也更有助于发挥财务数据分析作为企业经营管理健康晴雨表的作用。随着BI财务数据分析经验的…

数据结构介绍

1、什么是数据结构呢? 计算机底层存储、组织数据的方式。是指数据相互之间是以什么方式排列在一起的。数据结构是为了更方便的管理和使用数据,需要结合具体的业务来进行选择。一般情况下,精心选择的数据结构可以带来更高的运行或者存储效率。…

STM32单片机并口通信编程实例:代码详解与应用案例

引言: 单片机并口通信是一种传统而常用的通信方式,通过并行方式进行数据传输。尽管串口通信在现代应用中更加普遍,但并口通信在一些特定领域的应用仍然具有重要意义。本文将介绍单片机并口通信的原理、配置和实践方法,并给出STM32…

中电金信通过KCSP认证 云原生能力获权威认可

中电金信通过KCSP(Kubernetes Certified Service Provider)认证,正式成为CNCF(云原生计算基金会)官方认证的 Kubernetes 服务提供商。 Kubernetes是容器管理编排引擎,底层实现为容器技术,是云原…

【数据结构与算法】普里姆算法

普里姆算法 最小生成树 最小生成树,简称MST。 给定一个带权的无向连通图,如何选取一棵生成树,使树上所有边上权的总和为最小,这就叫最小生成树。N 个顶点,一定有 N - 1 条边半酣全部顶点N - 1 条边都在图中举例说明…

爬虫逆向实战(五)--猿人学第三题

一、数据接口分析 主页地址:猿人学第三题 1、抓包 通过抓包可以发现数据接口是api/match/3 2、判断是否有加密参数 请求参数是否加密? 无请求头是否加密? 无响应是否加密? 无cookie是否加密? 无 二、发送请求 …

【Java】智慧工地SaaS平台源码:AI/云计算/物联网/智慧监管

智慧工地是指运用信息化手段,围绕施工过程管理,建立互联协同、智能生产、科学管理的施工项目信息化生态圈,并将此数据在虚拟现实环境下与物联网采集到的工程信息进行数据挖掘分析,提供过程趋势预测及专家预案,实现工程…

Redis对象和五种常用数据类型

Redisobject 对象 对象分为键对象和值对象 键对象一般是string类型 值对象可以是string,list,set,zset,hash q:redisobj的结构 typedef struct redisObject { //类型 unsigned type:4; //编码 unsigned encoding:4; //指向底层实现…

ArcGIS Pro如何制作不规则形状图例

在默认的情况下,ArcGIS Pro生成的图例是标准的点、直线和矩形的,对于湖泊等要素而言,这样的表示方式不够直观,我们可以将其优化一下,制作不规则的线和面来代替原有图例,这里为大家介绍一下制作方法&#xf…

广东灯具3D扫描抄数建模服务3D测绘出图纸三维逆向设计-CASAIM

灯具三维逆向建模是一种将实际物体转换为数字模型的过程。通过逆向工程技术,可以将现有的灯具进行3D扫描,然后利用专业的逆向设计软件将其转换为准确的三维模型。 以下是CASAIM实施灯具三维逆向建模的一般步骤图: 1. 扫描:三维扫…

基于Prometheus监控Kubernetes集群

目录 一、环境准备 1.1、主机初始化配置 1.2、部署docker环境 二、部署kubernetes集群 2.1、组件介绍 2.2、配置阿里云yum源 2.3、安装kubelet kubeadm kubectl 2.4、配置init-config.yaml 2.5、安装master节点 2.6、安装node节点 2.7、安装flannel、cni 2.8、部署测…

读高性能MySQL(第4版)笔记03_监控

1. 服务级别帮助你定义客户满意的程度和标准,以便你在解决性能、可扩展性挑战等事情与开发内部工具之间做出时间权衡 2. 服务水平指标(SLI) 2.1. 如何衡量客户是否满意 3. 服务水平目标(SLO) 3.1. 为了确保客户满意…

三维模型OSGB格式轻量化顶点压缩主要技术方法分析

三维模型OSGB格式轻量化顶点压缩主要技术方法分析 在三维模型应用中,轻量化处理是提高数据传输效率、减少渲染时间和优化用户体验的重要手段。而OSGB格式是一种常见的三维模型格式,在进行轻量化处理时,顶点压缩是一种常用的技术方法。本文将…

Redis 十大数据类型

Redis数据类型都有哪些? Redis支持丰富的数据类型,那么具体在Redis7中都有哪些数据类型呢?请看下图: 官网介绍:https://redis.io/docs/data-types/。 其中,String、Hash、List、Set、Sorted Set等类型是大…

爬虫逆向实战(十五)--阿某某营登录

一、数据接口分析 主页地址:阿某某营 1、抓包 通过抓包可以发现登录接口是Users/Login 2、判断是否有加密参数 请求参数是否加密? 通过查看“载荷”模块可以发现有一个s加密参数 请求头是否加密? 无响应是否加密? 无cookie是…

2022年电赛C题——小车跟随行驶系统——做题记录以及经验分享

前言 自己打算将做过的电赛真题,主要包含控制组的,近几年出现的小车控制题目,自己做过的真题以及在准备电赛期间刷真题出现的问题以及经验分享给大家 这次带来的是22年电赛C题——小车跟随行驶系统,这道题目指定使用的是TI的单片…

uniapp微信小程序区分正式版,开发版,体验版

小程序代码区分是正式版,开发版,还是体验版 通常正式和开发环境需要调用不同域名接口,发布时需要手动更换 或者有些东西不想在正式版显示,只在开发版体验版中显示,也需要去手动隐藏 官方没有明确给出判断环境的方法&a…

web实现酷炫的canvas粒子动画背景

文章目录 前言一、particle-bg1. git地址:2. 安装3. 使用4. 完整demo 二、tsParticles1. 源码地址:2. 安装3. 引入4. 使用5. 几个例子5.1 ts粒子五彩纸屑烟花5.2 多粒子产卵器-用tsParticles制作5.3 ts粒子鼠标吸引力5.4 粒子烟花 源码地址完结 前言 粒…

C++--深入类和对象(上)

引言: 本篇博客将深入探究C中的类和对象。我们将从普通高校教学点开始,逐步介绍类的定义、对象的创建和使用,以及类与对象之间的关系。通过详细讲解访问控制和成员函数,我们将揭示封装的重要性以及如何实现数据的隐藏和安全性。 目…

Docker容器:docker基础概述、安装、网络及资源控制

文章目录 一.docker容器概述1.什么是容器2. docker与虚拟机的区别2.1 docker虚拟化产品有哪些及其对比2.2 Docker与虚拟机的区别 3.Docker容器的使用场景4.Docker容器的优点5.Docker 的底层运行原理6.namespace的六项隔离7.Docker核心概念 二.Docker安装 及管理1.安装 Docker1.…