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

JVM——GC垃圾回收器

GC垃圾回收器

JVM在进行GC时:并不是对这三个区域(新生区,幸存区(from,to),老年区)统一回收,大部分时候,回收都是新生区

GC两种类:轻GC(普通的GC),重GC(全局的GC)

GC题目:

  • JVM的内存模型和分区,详细到每个区放什么

  • 堆里面的分区有哪些?说说他们的特点

Eden,from,to,老年区,

  • GC的算法有哪些:

标记清除、标记整理(压缩)、复制算法、引用计数

  • 轻GC和重GC分别在什么时候发生

GC常用算法

引用计数法:

每一个对象都分配一个计数器(计数器也会占用内存空间),每当对象被调用一次,计数器便加1,当需要GC时,GC会查找被调用最少次的对象,将其淘汰。

该方法用的较少,因为一个大型项目或者循环创建对象时,计数器占用的空间将会变得非常大。

可达性分析

把对象之间的关系理解为一个树状结构,从某一起点出发,能够遍历到达的对象称之为“可达”,把无法到达的地方称之为“不可达”,将不可达的对象作为垃圾

可达性分析的关键要点为:进行上述遍历,需要有“起点”(GC Roots),起点可以是:

  • 栈中的局部变量
  • 常量池中引用的对象
  • 方法区中,静态成员引用的对象

缺点:

  • 消耗许多时间在扫描上,而某个对象成为了垃圾不一定能够第一时间发现
  • 如果在扫描过程中,对象的引用关系发生了变化,则会导致错误,因此,为了更准确地扫描,需要让其他业务线程暂停工作,这又会导致效率降低

复制算法

  1. 每次GC都会将Eden活的多项移到幸存区中,一旦Eden区被GC后,就会是空的
  2. 幸存0区与幸存1区两个区域有一个是from,有一个是to,且保证:to为空。
  3. 当幸存0区与幸存1区都有对象时,则将对想法少的区中的对象复制移动到另一个区,并将其标志为to,从Eden区来的对象都优先去to
  4. 新生区主要使用的就是复制算法

好处:没有内存碎片

坏处:浪费了一个幸存区的空间(多了一半的空间一直是空的),在极端情况下,from区满了,需要全部复制到to区,十分浪费资源

复制算法最佳使用场景:地点:新生区,情况:在对象存活度较低 此时使用复制算法最佳

标记清除算法

  1. 扫描所有对象,对活着的对象进行标记
  2. 对没有被标记的对象进行清除

缺点:产生内存碎片;需要两次扫描,严重浪费时间

优点:不需要额外的空间

标记压缩算法

对标记清除算法的再次优化

  1. 扫描所有对象,对活着的对象进行标记
  2. 对没有被标记的对象进行清除
  3. 压缩内存,将活着的对象向一段移动,清除内存碎片

缺点:又多了一个移动成本

优点:不会产生内存碎片

标记清除压缩算法

结合标记清除算法与标记压缩算法

先清理五次,再进行压缩

总结

内存效率:复制算法>标记清除算法>标记压缩算法(时间复杂度)

内存整齐度:复制算法=标记压缩算法>标记清除算法

内存利用率:标记压缩算法>标记清除算法>复制算法

GC:分代收集算法

年轻区:

  • 存活率低
  • 复制算法

老年区:

  • 区域大,存活率高
  • 标记清除(内存碎片不是太多的情况下)+标记压缩(内存碎片太多就压缩)混合实现

相关文章:

JVM——GC垃圾回收器

GC垃圾回收器 JVM在进行GC时:并不是对这三个区域(新生区,幸存区(from,to),老年区)统一回收,大部分时候,回收都是新生区 GC两种类:轻GC&#xff…...

【三维重建-PatchMatchNet复现笔记】

【三维重建-PatchMatchNet复现笔记】 1 突出贡献2 数据集描述3 训练PatchMatchNet3.1 输入参数3.2 制定数据集加载方式 1 突出贡献 在计算机GPU和运行时间受限的情况下,PatchMatchNet测试DTU数据集能以较低GPU内存和较低运行时间,整体误差位列中等&#…...

CSS - 常用属性和布局方式

目录 前言 一、常用属性 1.1、字体相关 1.2、文本相关 1.3、背景相关 1.3.1、背景颜色 1.3.2、背景图片 1.4、圆角边框 二、常用布局相关 2.1、display 2.2、盒子模型 2.2.1、基本概念 2.2.2、border 边框 2.2.3、padding 内边距 2.2.4、margin 外边距 2.3、弹…...

数据结构与算法之矩阵: Leetcode 134. 螺旋矩阵 (Typescript版)

螺旋矩阵 https://leetcode.cn/problems/spiral-matrix/ 描述 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 示例 1 输入:matrix [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3,6,9,8,7,4,5]示…...

LVS+keepalived高可用负载均衡集群

keepalived介绍 keepalived为LVS应运而生的高可用服务。LVS的调度器无法做高可用,于是keepalived这个软件。实现的是调度器的高可用。 但是keepalived不是专门为LVS集群服务的,也可以做其他代理服务器的高可用。 LVS高可用集群的组成 主调度器备调度器&…...

解密Kubernetes:探索开源容器编排工具的内核

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…...

苹果手机怎么设置壁纸?解锁设置壁纸的2种方法!

手机壁纸便是我们常说的屏幕背景图,一张好看的手机壁纸能使我们的心情变得愉悦。这个壁纸可以是风景、美食、喜欢的偶像、自己养的宠物,或者是你的家人、朋友。 拥有特殊含义的照片会更让人想要设置成壁纸。苹果手机怎么设置壁纸?本文将给大…...

解决LOGITECH 罗技驱动 MAC版出现的一些问题汇总!

安装前将之前的安装文件清理干净!!!!! 罗技驱动最新安装包下载 我的鼠标是G304 1. 驱动安装一直卡在99% 运行官方下载的安装程序,卡住后关掉窗口。 在终端中执行以下命令: sudo /Users/用户名…...

PyQt5入门4——给目标检测算法构建一个简单的界面

PyQt5入门4——给目标检测算法构建一个简单的界面 学习前言要构建怎么样的界面实例使用1、窗口构建a、按钮:获取图片b、Inputs、Outputs文本提示c、Inputs、Outputs图片显示d、箭头显示e、整点祝福 2、主程序运行 全部代码 学习前言 搞搞可视化界面哈,虽…...

Pandas数据分析系列9-数据透视与行列转换

Pandas 数据透视表 当数据量较大时,为了更好的分析数据特征,通常会采用数据透视表。数据透视表是一种对数据进行汇总和分析的工具,通过重新排列和聚合原始数据,可以快速获得更全面的数据洞察。数据透视表在Excel中也是经常使用的一个强大功能,在Pandas模块,其提供了pivot…...

部分背包问题细节(贪心)

有一种情况是,背包可以把金币全部拿走: 如果num小于0则返回值...

windows协议详解之-RPC/SMB/LDAP/LSA/SAM域控协议关系

如果你在windows域控环境中,例如企业的网络中开启wireshark抓包,你一定会遇到一大堆各种各样的协议。不同于互联网服务(大多基于HTTP),为了实现域控中各种各样的服务,windows的域控环境中采用了非常多的协议…...

uniapp中 background-image 设置背景图片不展示问题

有问题 <view class"file-picker__box jsz" tap"jszxszUpload(jsz)"></view>.jsz {background-image: url(../../static/example_drive.png); }解决1 <view class"file-picker__box jsz" :style"{ background-image: url(…...

Elasticsearch打分机制

一 例子 xx搜索引擎,就搜索结果本身而言,xx返回了正确的结果。因为返回的结果中,都包含了搜索的关键字。而我们从逻辑上来看,这一堆广告算是咋回事!这个吐槽是从用户的角度出发的。很显然,返回的结果中,尤其是前几条,有时甚至是前几页,都跟我们想要的结果相差深远! …...

【pdf密码】为什么我的PDF文件不能复制文字?

大家现在接触PDF文件越来越多&#xff0c;有的时候在网上下载的PDF文件打开之后&#xff0c;发现选中文字之后无法复制。甚至其他功能也都无法使用&#xff0c;这是怎么回事&#xff1f;该怎么办&#xff1f; 当我们发现文件打开之后&#xff0c;编辑功能无法使用&#xff0c;很…...

vim程序编辑器

最近读书读完感觉没有读一样&#xff0c;所以决定写笔记记录下 vi的使用包括三种模式 一般模式 编辑模式 a&#xff0c;i&#xff0c;o&#xff0c;r&#xff0c;A,I,O,R 用来插入或者替换内容 命令行模式 &#xff1a;wq保存退出&#xff1a;wq!强制保存退出&#xf…...

新手如何学习挖漏洞?看这篇就够了【网络安全】

什么是漏洞挖掘 漏洞挖掘是指通过分析软件、系统或网络中存在的安全漏洞来发现并利用这些漏洞。漏洞挖掘是信息安全领域的一项重要工作&#xff0c;可以帮助企业和组织提高系统的安全性&#xff0c;避免黑客攻击和数据泄露。 漏洞挖掘的流程一般可以概括为以下几个步骤&#x…...

CentOS 7.8 kubeadm安装 k8s 1.26

CentOS 7.8 kubeadm安装 k8s 1.26 规划 集群 主机名IP地址k8s-master01192.168.200.101k8s-master02192.168.200.102k8s-master03192.168.200.103k8s-node01192.168.200.201k8s-node02192.168.200.202 VIP(虚拟IP) 192.168.200.80 Harbor http://192.168.200.50 基础 …...

成都瀚网科技有限公司抖音小店:创新营销引领电商潮流

在当今数字化时代&#xff0c;抖音作为一款备受欢迎的短视频平台&#xff0c;不仅吸引了大量用户的关注&#xff0c;还为众多电商企业提供了新的销售渠道。成都瀚网科技有限公司抖音小店便是其中之一&#xff0c;凭借其独特的营销策略和优质的产品&#xff0c;成为了抖音电商领…...

警惕!又2本期刊被“On Hold”!

【SciencePub学术】 此前&#xff0c;继一本SSCI期刊被取消“On hold”标识后&#xff0c;仍处于“On Hold”状态的期刊有6本&#xff0c;其中包括4本SCI期刊和2本ESCI期刊。近日&#xff0c;经小编查询&#xff0c;又新增2本“On Hold”期刊&#xff0c;详情如下&#xff1a;…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题&#xff1a;3564. 季节性销售分析 题目&#xff1a; 表&#xff1a;sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN&#xff0c;根据VPN原理&#xff0c;打通两个内网必然需要借助一个公共中继节点&#xff0c;ktconnect工具巧妙的利用k8s原生的portforward能力&#xff0c;简化了建立连接的过程&#xff0c;apiserver间接起到了中继节…...

嵌入式学习笔记DAY33(网络编程——TCP)

一、网络架构 C/S &#xff08;client/server 客户端/服务器&#xff09;&#xff1a;由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序&#xff0c;负责提供用户界面和交互逻辑 &#xff0c;接收用户输入&#xff0c;向服务器发送请求&#xff0c;并展示服务…...

掌握 HTTP 请求:理解 cURL GET 语法

cURL 是一个强大的命令行工具&#xff0c;用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中&#xff0c;cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...

ubuntu系统文件误删(/lib/x86_64-linux-gnu/libc.so.6)修复方案 [成功解决]

报错信息&#xff1a;libc.so.6: cannot open shared object file: No such file or directory&#xff1a; #ls, ln, sudo...命令都不能用 error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory重启后报错信息&…...

java高级——高阶函数、如何定义一个函数式接口类似stream流的filter

java高级——高阶函数、stream流 前情提要文章介绍一、函数伊始1.1 合格的函数1.2 有形的函数2. 函数对象2.1 函数对象——行为参数化2.2 函数对象——延迟执行 二、 函数编程语法1. 函数对象表现形式1.1 Lambda表达式1.2 方法引用&#xff08;Math::max&#xff09; 2 函数接口…...

Linux安全加固:从攻防视角构建系统免疫

Linux安全加固:从攻防视角构建系统免疫 构建坚不可摧的数字堡垒 引言:攻防对抗的新纪元 在日益复杂的网络威胁环境中,Linux系统安全已从被动防御转向主动免疫。2023年全球网络安全报告显示,高级持续性威胁(APT)攻击同比增长65%,平均入侵停留时间缩短至48小时。本章将从…...