jvm 07 GC算法,内存池

01 垃圾判断算法
1.1引用计数算法

最简单的垃圾判断算法。在对象中添加一个属性用于标记对象被引用的次数,每多一个其他对象引用,计数+1,
当引用失效时,计数-1,如果计数=0,表示没有其他对象引用,就可以被回收。这个算法无法解决循环依赖的问题。

在这里插入图片描述
1.2 可达性分析算法

通过一系列被称为“GC Roots”的根对象作为起始节点集,从这些节点开始,根据引用关系链向下搜索,
如果某个对象无法被搜索到,则说明该对象无引用执行,可回收。相反,则对象处于存活状态,不可回收。JVM中的实现是找到存活对象,未打标记的就是无用对象,GC时会回收。

在这里插入图片描述
02.垃圾回收算法

2.1标记-清除算法

标记:Collector 从引用根节点开始遍历,标记所有被引用的对象。一般是在对象的 Header 中记录为可达对象。标记的是引用的对象,不是垃圾!!

清除:Collector 对堆内存从头到尾进行线性的遍历,如果发现某个对象在其 Header中 没有标记为可达对象,则将其回收。
在这里插入图片描述

 不足:
1效率问题:标记和清除两个过程的效率都不高。2空间问题:标记清除后会产生大量不连续的内存碎片,空间碎片太多可能会导致以后在程序运行过程中需要 分配较大对象时,无法找到足够的连续内存而不得不提前出发另一次垃圾收集动作。

2.2 复制算法(Copying)
1将原有的内存空间分为两块,每次只使用一块,

2在垃圾回收时,将正在使用的内存中的存活对象复制到未被使用的内存块中,然后清除正在使用的内存块中的所有对象。

3交换两个内存的角色,完成垃圾回收。在这里插入图片描述

2.3 标记—整理算法(Mark-Compact)

1标记阶段:先通过根节点,标记所有从根节点开始的可达对象,未被标记的为垃圾对象

2整理阶段:将所有的存活对象压缩到内存的一段,之后清理边界外所有的空间
在这里插入图片描述
标记-压缩算法

 适合用于存活对象较多的场合,如老年代。它在标记-清除算法的基础上做了一些优化。和标记-清除算法一样,标记-压缩算法也首先需要从根节点开始,对所有可达对象做一次标记。但之后,它并不简单的清理未标记的对象,而是将所有的存活对象压缩到内存的一端。之后,清理边界外所有的空间。

在这里插入图片描述

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

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

相关文章

架构设计-NX的二次开发API架构设计介绍

1.与整体的关系 2.API设计目标 能够允许用户访问NX的所有UI工具组件,二次开发用户能够编写外观和运行行为类似NX的应用程序。能够允许用户直接访问NX数据模型即使底层数据结构和功能实现发生很大变化,API接口保持稳定,不会影响上层用户。 3…

ARM架构(一)—— ARMV8V9基础概念

目录 1.ARMCore的时间线2.ARM术语小结2.1 A64和arrch642.2ARM架构现在的5个系列2.3 微架构2.4 PE2.5 Banked2.6 ARM文档术语2.7 IMPLEMENTATION DEFINFD 和 DEPRECATED2.8 EL1t和EL1h 3 ARMv7的软件架构4 安全状态切换模型4.1 Secure state和Non-secure state介绍 5 Interproce…

设计师必备:将复杂逻辑做成可视化图表,别说你不会,看过来。

将复杂逻辑做成可视化图可以帮助人们更直观地理解和分析复杂的关系和流程。以下是一般步骤: 1.确定目的: 首先需要明确制作可视化图的目的是什么,是为了展示数据的关系、流程的步骤、还是其他目的。不同的目的会对可视化图的设计和展示方式…

Ubuntu系统和硬件问题

来自🥬🐶程序员 Truraly | 田园 的博客,最新文章首发于:田园幻想乡 | 原文链接 | github (欢迎关注) 文章目录 虚拟机 linux 没网中文显示和中文输入法键盘失灵zip 解压中文乱码主系统和虚拟机之间复制粘贴…

如何在Linux系统上查找以太网卡驱动名称及其版本

说明 目录: 通过dmesg命令查看驱动名称及版本 通过ethtool命令查看驱动名称及版本 通过lshw命令查看驱动名称及版本 要使网卡硬件能够正常的运行,需要在Linux操作系统上提供合适的驱动程序,例如:用于intel网卡的ixgbe驱动。网卡…

FastAPI 学习之路(四十九)WebSockets(五)修复接口测试中的问题

其实代码没有问题,但是我们忽略了一个问题,就是在正常的开发中,肯定是遇到过这样的情况,我们频繁的有客户端链接,断开连接,需要统一的管理这些链接,那么应该如何管理呢。其实可以声明一个类去管…

机器学习算法 —— BP神经网络

🌟欢迎来到 我的博客 —— 探索技术的无限可能! 🌟博客的简介(文章目录) 目录 BP神经网络简介和应用算法简介BP神经网络的优点BP神经网络的缺点算法应用实战演示库函数导入模型训练模型参数查看数据和模型可视化模型预测基于BP神经网络的乳腺癌分类实践BP神经网络简介和…

怎样优化 PostgreSQL 中对复杂的排序规则和排序方向的查询?

🍅关注博主🎗️ 带你畅游技术世界,不错过每一次成长机会!📚领书:PostgreSQL 入门到精通.pdf 文章目录 怎样优化 PostgreSQL 中对复杂的排序规则和排序方向的查询一、理解复杂排序规则和排序方向二、优化索引…

vue前端实现导出页面为word(两种方法)

将vue页面导出为word文档,不用写模板,直接导出即可。 第一种方法(简单版) 第一步:安装所需依赖 npm install html-docx-js -S npm install file-saver -S第二步:创建容器,页面使用方法 注意:在当前页面引…

SortTracker稳定追踪算法

此算法为基于Hungarian算法和KalmanTracker算法所实现的稳定追踪算法。算法需要依赖opencv库,请确保安装opencv库并正确引入所需头文件。使用时请包含头文件./include/SortTracker.hpp,以及opencv库文件。源文件为./src/SortTracker.cpp。 调用接口 算法整体包含在命名空间…

Linux进程信号总结

目录 信号入门 生活中的信号 技术应用角度的信号 信号的发送与记录 信号处理常见方式概述 产生信号 通过终端按键产生信号 通过系统函数向进程发信号 由软件条件产生信号 ​编辑 由硬件异常产生信号 阻塞信号 信号其他相关常见概念 在内核中的表示 sigset_t …

【Python】Arcpy将excel点生成shp文件

根据excel点经纬度数据,生成shp,参考博主的代码,进行了修改,在属性表中保留excel中的数据。 参考资料:http://t.csdnimg.cn/OleyT 注意修改以下两句中的数字。 latitude float(row[1]) longitude float(row[2])imp…

ARIMA模型(AutoRegressive Integrated Moving Average Model)

ARIMA模型(AutoRegressive Integrated Moving Average Model)是一种广泛应用于时间序列数据分析和预测的统计模型。该模型结合了自回归(AR)、差分(I)和移动平均(MA)三个主要组件&…

为什么MySQL会选择B+树作为索引

为什么MySQL会选择B树作为索引 在数据库管理系统中,索引是提升查询效率的关键技术之一。MySQL作为广泛使用的关系型数据库管理系统,其核心存储引擎InnoDB选择B树作为其索引结构,这一选择背后蕴含了深刻的性能和存储效率考量。本文将简要介绍…

输出调节求解跟踪问题(二阶线性系统)

本文研究了一种基于增广系统的领导者-跟随者控制框架,旨在实现跟随者系统对领导者参考信号的精确跟踪。首先,建立了跟随者和领导者的独立状态空间方程,分别描述了它们的动态行为和输出关系。随后,通过将两者的状态空间方程结合成增…

在Windows环境下安装pycharm

Python环境搭建 第一步下载安装python 等待安装完成 验证python是否安装成功 Python开发工具安装部署 JetBrains: Essential tools for software developers and teams PyCharm: the Python IDE for data science and web development 下载社区版本的PyCharm 双击打开下载好的…

Web 中POST为什么会发送两次请求

文章目录 前言一、浏览器的重试机制二、跨域请求与预检请求三、表单的自动提交四、服务器配置问题五、前端代码的重复执行六、同源策略与CORS总结 前言 我们在做Web开发时,经常会使用浏览器F12查看请求参数是否正确,但是会发现POST请求,一个地…

【运维资料大全】运维全套资料整理(word原件完整版)

信息安全类、运维类资料整合: 1. 等保测评模板 2. 安全检查表(IDS,Linux,数据库,Tomcat,防火墙等) 3. 服务器安全巡检表 4. 网络定向攻击风险分析表 5. 应用系统常规检测表 6. 企业漏洞管理50个…

TS 入门(三):Typescript函数与对象类型

目录 前言回顾1. 函数类型a. 基本函数类型b. 可选参数和默认参数c. 剩余参数 2. 对象类型a. 基本对象类型b. 可选属性和只读属性 3. 类型别名和接口a. 类型别名b. 接口扩展 4. 类型推断和上下文类型a. 类型推断b. 上下文类型 扩展知识点:函数重载结语 前言 在前两章…

【银河麒麟操作系统】虚机重启lvs丢失现象分析及处理建议

了解银河麒麟操作系统更多全新产品,请点击访问麒麟软件产品专区:https://product.kylinos.cn 环境及现象描述 40台虚机强制重启后,其中8台虚机找不到逻辑卷导致启动异常,后续通过pvcreate 修复重建pv,激活vg和lv并修复…