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

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.lryc.cn/news/396794.html

相关文章:

  • ComfyUI入门教程
  • Flutter TabBar与TabBarView联动及获取当前点击栏目索引
  • 【区块链+跨境服务】跨境出口电商溯源 | FISCO BCOS应用案例
  • 记录一次mysql死锁问题的分析排查
  • 【UE5.1 角色练习】16-枪械射击——瞄准
  • 04OLED简介和调试方法
  • “LNMP环境搭建实战指南:从零开始配置CentOS 7下的Nginx、MySQL与PHP“
  • 院内导航:如何用科技破解就医找路难题
  • C++基础篇(1)
  • 云视频监控中的高效视频转码策略:视频汇聚EasyCVR平台H.265自动转码H.264能力解析
  • xcode配置swift使用自定义主题颜色或者使用RGB或者HEX颜色
  • 相同含义但不同类型字段作为join条件时注意事项
  • 数据结构(3.8)——栈的应用
  • 前端面试题35(在iOS和Android平台上,实现WebSocket协议有哪些常见的库或框架?)
  • Mysql如何高效ALTER TABL
  • vue3+vite搭建第一个cesium项目详细步骤及环境配置(附源码)
  • LiteOS增加执行自定义源码
  • 《Nature》文章:ChatGPT帮助我学术写作的三种方式
  • 防火墙安全策略与用户认证综合实验
  • vue学习day05-watch侦听器(监视器)、Vue生命周期和生命周期的四个阶段、、工程化开发和脚手架Vue cli
  • 数字人+展厅互动体验方案:多元化互动方式,拓宽文化文娱新体验
  • 在Spring Boot项目中集成监控与报警
  • opencv实现目标检测功能----20240704
  • 音视频解封装demo:使用libmp4v2解封装(demux)出mp4文件中的h264视频数据和aac语音数据
  • 手撸俄罗斯方块(一)——简单介绍
  • 构建LangChain应用程序的示例代码:61、如何使用 LangChain 和 LangSmith 优化链
  • Android系统通过属性设置来控制log输出的方案
  • JavaDoc的最佳实践
  • 数字力量助西部职教全面提升——唯众品牌大数据、人工智能系列产品中标甘肃庆阳职院数字经济人才培养基地!
  • Swagger的原理及应用详解(四)