15.JVM垃圾收集算法

一、垃圾收集算法

1.分代收集理论

    分代收集理论是JAVA虚拟机进行垃圾回收的一种思想,根据对象存活周期的不同将内存分成不同的几个区域;一般将JAVA堆内存分为新生代和老年代;根据每个分代特点选择不同的垃圾收集器;

    在新生代中,每次收集的对象(超过99%)都会立即被清理掉,采用复制算法,每次只需要付出很少的复制成本就可以完成垃圾收集;

    在老年代中,对象的存活几率较高,存活周期较长,并且没有额外的空间进行分配担保,所以必须选择标记-整理或者标记-清除的算法;注意这种算法效率较低,会是复制算法的10倍以上;

2.标记复制算法

为了解决效率问题,采用复制算法,将堆内存分成2部分,每次使用其中一块,当这块使用完了之后,就将少数存活的对象复制到另外一块区域,之前使用的区域则全部删除;

右侧为未使用区域,左侧 蓝色存活对象; 灰色回收对象,白色未使用对象,当进内存使用到一半时(左侧用满),将存活的对象复制到右侧,左侧全部清空

复制整理后

左侧全部为未使用区域,右侧为复制整理后的存活对象

3.标记-清除算法

分为标记和清除2个阶段,标记存活的对象,统一回收未被标记的对象;

问题:1.效率低下(若标记对象太多,效率不高)

           2.空间问题(标记清除后会产生很多空间碎片)

标记清除之前

标记清除之后

4.标记-整理算法

    根据老年代的特点出的一种标记算法,标记过程仍然和标记-清除算法一样,后续不是直接清除未标记的对象,而是让存活的对象统一移动到内存一端,将另一端清除

标记整理之前

标记整理之后

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入理解 TypeScript 中的 as 关键字

在TypeScript中,as 关键字是一种类型断言(Type Assertion)的语法,用于告诉编译器如何理解某个变量的类型。这在开发过程中非常有用,尤其是当你知道比编译器更多的类型信息时 基本用法 类型断言允许你在编译时更改变量的…

InnoDB引擎(架构,事务原理,MVCC详细解读)

目录 架构分析 逻辑存储结构​ 内存结构​ Buffer Pool​ ChaneBuffer 自适应哈希​ LogBuffer​ 磁盘结构​ 后台线程​ 事务原理​ redolog日志 undolog日志​ MVCC​ 三个隐藏字段​ undolog版本链 readview​ RC(读已提交原理分析)​ RR(可重复读原理分析…

动态规划之斐波那契数列

文章目录 第 N 个泰波那契数三步问题使用最小花费爬楼梯解码方法 动态规划的基本思想是利用之前已经计算过的结果,通过递推关系式来计算当前问题的解。 整体思路 状态表示状态转移方程初始化填表顺序返回值 第 N 个泰波那契数 题目: 第 N 个泰波那契数 思…

云网络验证系统云验证+卡密生成+多应用多用户管理

云网络验证系统云验证,多样化应用管理方式,多种项目任你开发,分布式应用开关,让您的应用开发更简单,本系统借鉴于易如意API写法及思路,完美实现多用户多应用管理。 源码特色 1,对接&#xff1…

013_django基于大数据的高血压人群分析系统2024_dcb7986h_055

目录 系统展示 开发背景 代码实现 项目案例 获取源码 博主介绍:CodeMentor毕业设计领航者、全网关注者30W群落,InfoQ特邀专栏作家、技术博客领航者、InfoQ新星培育计划导师、Web开发领域杰出贡献者,博客领航之星、开发者头条/腾讯云/AW…

MarkDownload 剪裁网页插件配置使用全流程

前言 写在前面,大家有什么问题和需要可以跟我交流 需求 之前一直使用 Joplin 的剪裁网页功能,但是剪裁下来后不可避免的需要使用 Joplin 对剪裁下来的内容做处理,Joplin 用起来不是很习惯,所以在想可不可以用 Obsidian 来实现网…

图的最小生成树算法--普里姆(Prim)算法和克鲁斯克尔(Kruskal)算法

一、图的最小生成树 最小生成树(Minimum spanning tree,MST)是最小权重生成树(Minimum weight spanning tree)的简称,是一个连通加权无向图中一棵权值最小的生成树。 在一给定的无向图 G ( V , E ) G …

探索 Jupyter 笔记本转换的无限可能:nbconvert 库的神秘面纱

文章目录 探索 Jupyter 笔记本转换的无限可能:nbconvert 库的神秘面纱背景:为何选择 nbconvert?库简介:nbconvert 是什么?安装指南:如何安装 nbconvert?函数用法:简单函数示例应用场…

MySQL企业常见架构与调优经验分享

文章目录 一、选择 PerconaServer、MariaDB 还是 MYSQL二、常用的 MYSQL 调优策略三、MYSOL 常见的应用架构分享四、MYSOL 经典应用架构 观看学习课程的笔记,分享于此~ 课程:MySQL企业常见架构与调优经验分享 mysql官方优化文档 一、选择 PerconaServer、…

全方面熟悉Maven项目管理工具(二)坐标、pom.xml文件的解读!

1. 坐标(核心概念) 1.1 数学中的坐标 使用 x、y、z 三个向量作为空间的坐标系,可以在空间中唯一的定位到一个点 1.2 Maven 中的坐标 1.2.1 向量说明: 使用三个向量在 Maven的仓库 中唯一的定位到一个 jar 包 groupId&#xf…

【某农业大学计算机网络实验报告】实验四 路由信息协议RIP

实验目的: 1.深入了解RIP协议的特点和配置方法:通过此次实验,掌握RIP协议作为一种动态路由协议的基本工作原理,了解其距离向量算法的核心概念,以及如何在网络设备上配置RIP协议; 2.验证RIP协议…

AndroidStudio实验报告——实验一、二

目录 实验一: AS安装与安卓环境搭建 一、实验目标 二、实验内容 (一)Android Studio安装 (二)JDK安装与配置 (三)Android SDK安装与配置 三、实验结果:(实…

【Java】正则表达式详解

目录 引言 一、基本概念 1.1 元字符 1.2 预定义字符类 1.3 边界匹配符 1.4 数量标识符 1.5 捕获与非捕获分组 二、Java中的正则表达式支持 三、正则表达式的使用示例 3.1 匹配字符串 3.2 替换字符串 3.3 分割字符串 3.4 使用Pattern和Matcher 3.5 捕获组和后向…

局域网——Prim Kruskal

题目 Prim &#xff08;生成一颗包含起点的最小生成树&#xff0c;所以要多次调用&#xff09; #include <bits/stdc.h>using namespace std;const int N 510; const int inf 0x3f3f3f3f;int n, m; int g[N][N], dis[N]; bool p[N], vis[N];int prim (int u) {memset(…

分布式检测线路、精准定位故障:输电线路故障定位监测系统

分布式检测线路、精准定位故障&#xff1a;输电线路故障定位监测系统 随着电力行业的快速发展和电网规模的不断扩大&#xff0c;输电线路作为电力传输的“生命线”&#xff0c;其安全稳定运行对于保障电力供应、促进经济社会发展具有重要意义。然而&#xff0c;输电线路通常暴…

[云] Deploying Your First Serverless Application

• Goal: • Hands-on lab to get started with Serverless • Agenda: • Deploying Your First Serverless Application • Assignment Introduction Create and test function in AWS Lambda • Lets create an addition function using AWS Lambda. • To create the addi…

HCIP-HarmonyOS Application Developer 习题(十六)

&#xff08;判断&#xff09;1、HiLink通过分布式软总线的方式连接所有设备&#xff0c;强能力设备可对弱能力设备进行设备虚拟化&#xff0c;将弱设备当做本机设备直接调用。 答案&#xff1a;错误 分析&#xff1a;HiLink 主要针对的是应用开发者与第三方设备开发者&#xf…

100种算法【Python版】第1篇——贪心策略

贪心是一种策略 1 策略内核1.1 基本思想1.2 策略步骤1.3 贪心算法举例说明1.3.1 活动选择问题1.3.2 01背包问题1.3.3 最优解分析 2 贪心策略的应用2.1 应用&#xff1a;计算单源最短路径2.2 应用&#xff1a;霍夫曼编码字符串 3 策略优缺点3.1 优点3.2 缺点3.3 总结 1 策略内核…

助力语音技术发展,景联文科技提供语音数据采集服务

语音数据采集是语音识别技术、语音合成技术以及其他语音相关应用的重要基础。采集高质量的语音数据有助于提高语音识别的准确性&#xff0c;同时也能够促进语音技术的发展。 景联文科技作为专业的数据采集标注公司&#xff0c;支持语音数据采集。可通过手机、专业麦克风阵列、专…

快速了解Python流程控制语句基本使用

&#x1f600;前言 在编程中&#xff0c;流程控制语句是用于控制程序执行顺序的关键部分。通过条件判断和循环机制&#xff0c;程序能够根据不同的情况选择执行特定的代码块&#xff0c;或重复执行某段代码。本文将详细介绍 Python 中常见的流程控制语句&#xff0c;包括 if、i…