垃圾回收算法

news2024/11/22 9:57:26

1.种类

垃圾回收算法通常意义上有两种:

  1. 引用计数式垃圾收集
  2. 追踪式垃圾收集

追踪式垃圾收齐又称“间接垃圾收集”,现在有很多算法大都遵循了分代收集理论,而分代收集理论的基础,却是以下俩个分代假说:

  1. 强分代假说:熬过越多次垃圾回收的对象越难处理
  2. 弱分代假说:绝大多数的对象都是朝生夕灭的

 

但是新生代中的对象也有可能让老年代中的对象进行引用,为了找出该对象,只能去遍历老年代,无疑又是一种困难,故我们又提出了一种假说(跨代引用假说)

  • 跨代引用假说:存在互相引用关系的两个对象,应该是趋向于同时生存或者是同时灭亡的,为了缓解收集垃圾时的负担,我们可以在新生代上建立一个全局的数据结构(记忆集),只对进行跨代引用的老年代对象进行扫描。

 2.回收类型的划分

  • 部分收集
  1. 新生代收集
  2. 老年代收集
  3. 混合收集
  • 整堆收集

3.算法详解 

1.标记—清除算法:算法分为标记清除两个阶段,首先标记所需要回收的对象,统一回收到所有     标记的对象

 主要缺点为:

  • 执行效率不太稳定(需要大量标记和清除动作)
  • 内存空间的碎片化问题(清除之后会产生大量不连续的内存碎片,导致需要分配较大空间对象时找不到连续内存而再次触发垃圾收集动作)

 

 2.标记—复制法:将可用内存按容量分为大小两块,每次使用一块,将存活的对象移到另一块去,然后把使用过的内存一次性清理。

缺点:将可用内存缩小一半,空间浪费严重

 3.标记—整理:让存活的对象都向空间一段移动,直接清理掉边界以外的内存

 这种移动需要全程暂停用户应用程序才能进行,这样的停顿被称为“Stop The World”。

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

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

相关文章

MyPerf4J一个高性能、无侵入的Java性能监控和统计工具,有点东西!

背景 随着所在公司的发展,应用服务的规模不断扩大,原有的垂直应用架构已无法满足产品的发展,几十个工程师在一个项目里并行开发不同的功能,开发效率不断降低。 于是公司开始全面推进服务化进程,把团队内的大部分工程…

软件测试之移动app测试框架有哪些?

一、适用于Android的移动app测试框架 1.Espresso 十分流行的一款谷歌开发的Android测试框架,具备高性能性。可以创建非常简单直接的测试,而不必担心app的基础架构。此外,它是开源的,这使开发人员能够自定义框架。 2.Selendroid…

DOM算法系列003-获取节点A相对于节点B 的位置

UID: 20221214170009 aliases: tags: source: cssclass: created: 2022-12-14 1. 节点位置关系 两个节点A、B之间的位置关系总共有几种?我们第一时间能想到的: 节点A在节点B之后节点A在节点B之前节点A包含节点B节点A被节点B包含 除此之外,…

【python绘制地图——使用folium制作地图,可解决多数问题】

Python使用folium制作地图并生成png图片 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 第一章 使用folium制作地图 第二章 使用Html2Image生成png图片 第三章 使用reportlab制作pdf报告 提示:写完文章后,目录…

JavaWeb:Mysql(数据库管理系统)、Navicat(Mysql的图形化工具)

MyBatis是对JDBC的简化 以后的升级框架,基本都是围绕 JavaWeb程序 所做的升级 Mysql就是一个数据库管理系统,在系统里可以创建一个个数据库,即DBMS中创建一个个DB Mysqul官网https://downloads.mysql.com/archives/community/ 选择5.7.2…

PCB设计—AD20和立创EDA设计(1)创建项目

(1)纯新手建议先利用立创EDA画一个PCB,对PCB有一个简单的了解再学习AD20。 (2)立创EDA教程:立创EDA极速入门(1)——熟悉PCB和立创EDA基本操作;立创EDA极速入门&#xff0…

《纳瓦尔宝典》笔记二——停止出卖时间后,如何才能有收入

目录 一、引言 二、经典观点 1、没有捷径成功,所以不要抱走捷径心态 2、书的价值 3、一种杠杆-资产(公司、股票、实业)或被动收入(媒体或代码) 4、薪水与财富的区别 5、把自己产品化 6、共事的人和工作的内容比…

C# .net 接口接收不同类型参数

public ActionResult ccbwx_notifyurl() { #region 请求参数 Hashtable has new Hashtable(); System.Collections.Specialized.NameValueCollection collection; //if (this.HttpContext.Request.HttpMethod.ToUppe…

前端基础(八)_盒子模型(标准盒子模型和怪异盒子模型)

盒子模型 什么是盒子模型 网页设计中常听的属性名:内容(content)、内边距(padding)、边框(border)、外边距(margin), CSS盒子模型都具备这些属性。这些属性我们可以用日常生活中的常见事物——盒子作一个比喻来理解,所以叫它盒子模型。CSS盒…

Jenkins 解决GIT部署出现连续SCM部署的问题

背景 最近在工作中用Jenkins部署项目代码,但是每当我选择好了Gittag参数进行部署时会出现两个Job 其中一个Job是由我本人创建的,还有一个Job是由SCM自动创建的,而且由SCM自动创建的Gittag参数是默认值。 我想关闭这个SCM构建,但是…

模板方法模式(Template Method)

参考: 模板方法设计模式 (refactoringguru.cn) design-patterns-cpp/TemplateMethod.cpp at master JakubVojvoda/design-patterns-cpp GitHubhttps://github.com/JakubVojvoda/design-patterns-cpp/blob/master/state/State.cpp) 文章目录一、什么是模板方法模…

41_STM32CAN外设简介

目录 STM32的CAN外设简介 CAN控制内核 工作模式 位时序及波特率 CAN发送邮箱 CAN接收FIFO 验收筛选器 筛选器设置举例 STM32的CAN外设简介 STM32的芯片中具有bxCAN控制器(Basic Extended CAN),它支持CAN协议2.0A和2.0B标准。 该CAN控制器支持最高的通讯速率为1Mb/s;可…

汉字风格迁移篇--KAGAN:一种中国诗歌风格转换的方法

🚀针对问题: 以往的方法都是针对单字图像,容易忽略了中文句子或一张图像中包含的多个字符。 🚀提出的方法: Constancy Loss, Smooth L1 loss;TV loss ,key-attention mechanism GAN;多通道鉴别器 🚀使用的指标 L1 Loss ,SSIM, PSNR, LPIPS 已有工作 字符风…

LiveGBS国标流媒体平台-海康NVR摄像机自带物联网卡摄像头注册GB/T28181国标平台看不到设备的时候如何抓包及排查

GB/T28181国标流媒体平台海康大华宇视华为等硬件NVR摄像机注册到LiveGBS国标平台看不到设备的时候如何抓包及排查1、设备注册后查看不到1.1、是否是自带物联网卡的摄像头1.2、关闭萤石云1.3、防火墙排查1.4、端口排查1.5、IP地址排查1.6、设备TCP/IP配置排查1.7、设备多网卡排查…

java计算机毕业设计基于安卓Android的学生作业管理系统APP

项目介绍 网络的广泛应用给生活带来了十分的便利。所以把学生作业管理与现在网络相结合,利用java技术建设学生作业管理APP,实现学生作业管理的信息化。则对于进一步提高学生作业管理发展,丰富学生作业管理经验能起到不少的促进作用。 学生作业管理APP能够通过互联网得到广泛的、…

国内船载B级(CSTDMA)AIS设备使用问题简析

2019-06-30 01:45王晏海朱小平 航海订阅 2019年3期 收藏 王晏海 朱小平 国内船载B级(CSTDMA)AIS设备使用问题简析_参考网 摘 要:国内船载B级AIS大多采用载波侦听时分多址(CSTDMA)技术,目前仍存在部分船…

已解决raise JSONDecodeError(“Expecting value”, s, err.value) from None

已解决raise JSONDecodeError(“Expecting value”, s, err.value) from None json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 文章目录报错代码报错翻译报错原因解决方法帮忙解决报错代码 粉丝群一个小伙伴想用Python读取json报错,但是…

分布式基础篇1——环境搭建

一、项目简介1、电商模式2、项目前置知识3、项目技术&特色4、项目架构图5、微服务划分图二、分布式基础概念1、微服务2、集群&分布式&节点3、远程调用4、负载均衡5、服务注册/发现&注册中心6、配置中心7、服务熔断和服务降级8、API网关三、环境搭建1、使用 Vag…

PGL 系列(三)词向量 Skip-gram

环境 python 3.6.8paddlepaddle-gpu 2.3.0numpy 1.19.5一、Skip-gram概念 Skip-gram:根据中心词推理上下文 在Skip-gram中,先在句子中选定一个中心词,并把其他词作为这个中心词的上下文。如 上图 Skip-gram所示,把“spiked”作为中心词,把“Pineapples、are、and、yellow”…

万亿数字化市场,数据科学为何能扛起“价值担当”?

数据科学家,被誉是“21世纪最性感的职业”。 如今,一股数据科学的热潮正席卷国内各大高校。今年十月底,一系列数据科学的网络直播课在多所大学火爆异常,吸引来自北大、清华、北师大、哈工大、浙大等多所高校学生广泛参与。 该系…