【JVM】垃圾收集器理论算法

news/2024/5/15 3:10:37/文章来源:https://blog.csdn.net/at10090/article/details/120118622

垃圾收集算法

垃圾收集算法是内存回收的方法理论(理论方法,并未实际实现)

分代收集理论

JVM虚拟机的垃圾收集是采用分代收集算法,根据对象的存活周期的不同将内存分块。java将堆分为新生代和老年代,就可以根据不同年龄的不同特点选择合适的垃圾收集算法。

例如在新生代中,每次mGC都会造成大量的对象回收,只存在少里对象存活,只需要复制算法进行复制到幸存者区。

标记-复制算法

“复制”算法,它将内存分为大小相同的俩块,每次使用其中的一块。当使用的那块内存使用完后,就将还存活的对象复制到另一块,然后将之前使用的那块清理掉。就是每次内存回收都是堆内存中另一块进行回收。

流程

  • 当使用内存块满时,标记存活对象,复制存活对象进入未使用内存块。
  • 清理使用内存块,两个内存块切换使用状态。(循环)
    在这里插入图片描述
    缺点:内存利用率过低,每次只有一半的内存被使用.

标记-清理算法

该算法分为两个阶段:

  • 标记
    • 第一种:标记所有存活对象(一般使用)
    • 第二种:标记所有需要回收对象
  • 清除
    • 第一种:回收所有未被标记的对象(一般使用)
    • 第二种:回收所有被被标记对象

缺点:

  1. 效率问题(如果需要标记对象过多,效率不高甚至低)
  2. 空间问题(标记清除后产生大量不连续的碎片,即不连续的内存)

在这里插入图片描述

标记-整理算法

该算法就是解决不连续内存的算法,该对象不是针对内存回收,而是对内存进整理的,它将所有存活的对象向一端移动,然后清理对象边界以外的内存。

在这里插入图片描述

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

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

相关文章

【Linux】理解文件系统

文章目录理解文件系统了解磁盘结构inode理解文件系统 了解磁盘结构 磁盘是计算机中的一个 机械设备 这个磁盘的盘片就像光盘一样,数据就在盘片上放着, 但是光盘是只读的,磁盘是可读可写的 机械硬盘的寻址的工作方式: 盘片不断旋转,磁头不断摆动,定位到特定的位置 我们可以把…

怕被AI取代快想办法“攒”个“数字第二大脑”

每日经济新闻发文:来自央视财经微博2月27日消息,美国《财富》杂志网站近日报道,美国一家提供就业服务的平台对1000家企业进行了调查。结果显示,美国最新调查显示50%企业已在用ChatGPT,其中48%已让其代替员工,有公司省下10多万美元!还有30%表示,有计划使用。

【IoT】2023裁员潮还在继续,构建规划能力也许是一剂良方

今天要分享的主题是华为的市场管理方法论。 市场管理这个词总体来说还是有些抽象,本质上来看或者说从个人的角度来看,其实就是一种规划的能力。 无论是创业,还是作为职场人,规划能力必将是你不可或缺的一种基础能力。 尤其是在这样…

某马程序员NodeJS速学笔记

文章目录前言一、什么是Node.js?二、fs文件系统模块三、Http模块四、模块化五、开发属于自己的包模块加载机制六、Express1.初识ExpressGET/POSTnodemon2.路由模块化3.中间件中间件分类自定义中间件4. 跨域问题七、Mysql模块安装与配置基本使用Web开发模式Session认证JWT八、m…

八、异步编程

文章目录异步编程FutureTask应用&源码分析FutureTask介绍FutureTask应用FutureTask源码分析FutureTask中的核心属性FutureTask的run方法FutureTask的set&setException方法FutureTask的cancel方法FutureTask的get方法FutureTask的finishCompletion方法CompletableFuture…

基于部标JT808的车载视频监控需求与EasyCVR视频融合平台解决方案设计

一、方案背景 众所周知,在TSINGSEE青犀视频解决方案中,EasyCVR视频智能融合共享平台主要作为视频汇聚平台使用,不仅能兼容安防标准协议RTSP/Onvif、国标GB28181,互联网直播协议RTMP,私有协议海康SDK、大华SDK&#xf…

虚拟局域网VLAN的实现机制

虚拟局域网VLAN的实现机制1.IEEE 802.1Q帧2.交换的端口类型AccessTrunkHybrid(华为特有)1.IEEE 802.1Q帧 IEEE802.1Q帧(也称Dot One Q帧)对以太网的MAC帧格式进行了扩展,插入了4字节的VLAN标记。 2.交换的端口类型 A…

Facebook广告成本过高?尝试这些成本控制技巧

在当今的数字营销领域中,Facebook广告已经成为许多企业的首选。但是,随着竞争的加剧,Facebook广告的成本也在不断攀升。如果您发现自己的Facebook广告成本过高,不要担心,下面将介绍一些成本控制技巧。一.利用Facebook的…

第四阶段05- 关于响应结果JsonResult对象,枚举,Spring MVC的统一处理异常机制

23. 关于响应结果 目前,当成功的添加相册后,服务器端响应的结果是: 添加相册成功!如果相册名称已经被占用,服务器端响应的结果是: 添加相册失败,相册名称已经被占用!以上的响应结…

机器学习100天(三十二):032 KD树的构造和搜索

机器学习100天,今天讲的是:KD树的构造和搜索! 《机器学习100天》完整目录:目录 在 K 近邻算法中,我们计算测试样本与所有训练样本的距离,类似于穷举法。如果数据量少的时候,算法运行时间没有大的影响,但是如果数据量很大,那么算法运行的时间就会很长。这在实际的应用…

4.排序算法之一:冒泡排序

排序算法稳定性假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]r[j],且r[i]在r[j]之前,而在排序后的序列中,r[…

柔性电路板的优点、分类和发展方向

柔性电路板是pcb电路板的一种,又称为软板、柔性印刷电路板,主要是由柔性基材制作而成的一种具有高可靠性、高可挠性的印刷电路板,具有厚度薄、可弯曲、配线密度高、重量轻、灵活度高等特点,主要用在手机、电脑、数码相机、家用电器…

二叉树——二叉树的最近公共祖先

二叉树的最近公共祖先 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一…

Guitar Pro8免费吉他曲谱mySongBook

每周都会发布新的谱子,目前已有有数千首歌曲可供选择,在谱库中,您能找到 Guns N Roses,Miles Davis,Ed Sheeran 等人的经典曲目。开头我们先做一个小实验:现在打开你电脑里存放曲谱的文件夹,里面…

[busybox] busybox生成一个最精简rootfs(上)

这篇文章是承接着[rootfs]用busybox做一个rootfs(根文件系统)来的,再回看这篇我很久之前写的文章的时候,有一个问题出现在我的脑海中,创建了这个文件那个文件,但确实是每个文件都是必需的吗? 这篇文章我们就来讨论下这…

【用Group整理目录结构 Objective-C语言】

一、接下来,我们看另外一个知识点,怎么用Group把这一堆乱七八糟的文件给它整理一下,也算是封装一下吧, 1.这一堆杂乱无章的文件: 那么,哪些类是属于模型呢,哪些类是属于视图呢,哪些类是属于控制器呢, 我们接下来通过Group的方式,来给它们分一下类, 这样看起来就好…

蓝海彤翔执行副总裁张加廷接受【联播苏州】独家专访

今年春节档,科幻类电影《流浪地球2》票房口碑双丰收,截至目前,累计票房已破 38 亿,淘票票评分 9.6 ,影片的特效质感可以媲美国际顶尖水平。其中,蓝海彤翔为影片的后期制作提供了出色的渲染服务。2月21日&am…

招投标管理系统-适合于招标代理、政府采购、企业采购、工程交易等业务的企业

招投标管理系统-适合于招标代理、政府采购、企业采购、工程交易等业务的企业 招投标管理系统是一个用于内部业务项目管理的应用平台。以项目为主线,从项目立项,资格预审,标书编制审核,招标公告,项目开标,项…

[chapter 11][NR Physical Layer][Layer Mapping]

前言:这里参考Curious Being系列 ,简单介绍一下NR 5G 物理层核心技术层映射.我们主要讲了一下what is layer Mapping, why need layer Mapping, how layer Mapping 参考文档:3GPP 38.211- 6.3.1.3 Layer mapping《5G NR Physical Layer | Cha…

js几种对象创建方式

适用于不确定对象内部数据方式一:var p new Object(); p.name TOM; p.age 12 p.setName function(name) {this.name name; }// 测试 p.setName(jack) console.log(p.name,p.age)方式二: 对象字面量模式套路:使用{}创建对象,同…