JVM垃圾回收机制及思维导图

一、Java垃圾回收机制

在java中,程序员是不需要显示的去释放一个对象的内存的,而是由虚拟机自行执行。在JVM中,有一个垃圾回收线程,它是低优先级的,在正常情况下是不会执行的,只有在虚拟机空闲或者当前堆内存不足时,才会触发执行,扫描那些没有被任何引用的对象,并将它们添加到要回收的集合中,进行回收。

二、如何判断对象是否可以被回收

可以用两种方法来判断:引用计数器法、可达性分析算法。

引用计数器法:为每个对象创建一个引用计数,有对象引用时计数器 +1,引用被释放时计数 -1,当计数器为 0 时就可以被回收。但是他有一个缺点是不能解决循环引用的问题。

可达性分析算法:从 GC Roots 开始向下搜索,搜索所走过的路径称为引用链。当一个对象到 GC Roots 没有任何引用链相连时,则证明此对象是可以被回收的。

三、JVM的垃圾回收算法

1、标记清除法:标记无用对象,然后进行清除回收。缺点:效率不高,无法清除垃圾碎片。

2、标记复制法:按照容量划分二个大小相等的内存区域,当一块用完的时候将活着的对象复制到另一块上,然后再把已使用的内存空间一次清理掉。缺点:内存使用率不高,只有原来的一半。

3、标记整理法:标记无用对象,让所有存活的对象都向一端移动,然后直接清除掉端边界以外的内存。

4、分代算法:根据对象存活周期的不同将内存划分为几块,一般是新生代和老年代,新生代基本采用复制算法,老年代采用标记整理算法。

四、垃圾收集器

用于回收新生代的收集器包括Serial、PraNew、Parallel Scavenge,

用于回收老年代的收集器包括Serial Old、Parallel Old、CMS,

用于回收整个Java堆的G1收集器。

新生代垃圾回收器一般采用的是复制算法,复制算法的优点是效率高,缺点是内存利用率低;老年代回收器一般采用的是标记-整理的算法进行垃圾回收。


思维导图

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

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

相关文章

【Alibaba工具型技术系列】「EasyExcel技术专题」实战技术针对于项目中常用的Excel操作指南

这里写目录标题 EasyExcel教程Maven依赖 EasyExcel API分析介绍EasyExcel 注解通用参数ReadWorkbook(理解成excel对象)参数ReadSheet(就是excel的一个Sheet)参数注解参数通用参数 WriteWorkbook(理解成excel对象&#…

k8s学习-Deployment

Kubernetes通过各种Controller来管理Pod的生命周期 。 为了满足不同业 务 景 , Kubernetes 开发了Deployment、ReplicaSet、DaemonSet、StatefuleSet、Job等多种Controller。我们⾸先学习最常用Deployment。 1.1 Kubectl命令直接创建 第一种是通过kubectl命令直接…

java读取配置文件数据

在实际开发中,项目中难免会有一些秘钥或者不经常使用到的配置信息,此时,就可以将这些配置信息统一写到配置文件中。随后使用Value注解读取配置文件的值来向Spring中Bean的属性设置值。 例如,一些系统环境变量信息,数据…

路飞项目--02

补充:axios封装 # 普通使用:安装 ,导入使用 const filmListreactive({result:[]}) axios.get().then() async function load(){let responseawait axios.get()filmList.resultresponse.data.results } # 封装示例:请求发出去之前…

让代码运行得更快:深入理解进程、线程和协程

让代码运行得更快:深入理解进程、线程和协程 什么是执行体 在深入探讨进程、线程和协程之前,我想先介绍下执行体这个概念。 执行体这个词语是我从七牛云创始人许式伟大佬的专栏中学到的,它代表操作系统中程序执行的载体,涉及到…

makefile,make,gcc/g++ 编译流程分析

文章目录 makefile,make,gcc/g 编译流程分析 makefile,make,gcc/g 编译流程分析 C实现加减乘除四个运算 // // Created by qiufh on 2024-01-17. //#include "add.h"int add(int a, int b) {return a b; } // // Cre…

C++的命名空间域

一、域作用限定符 :: 即是域作用限定符,它的作用是指明一个标识符(变量、函数或类)来自哪一个作用域范围 二、编译器搜索变量、函数等的原则 1.先搜索局部变量,2.再搜索全局变量,3.最后搜索指定的命名空间域 三、…

python数字图像处理基础(十)——背景建模

目录 背景建模背景消除-帧差法混合高斯模型 背景建模 背景建模是计算机视觉和图像处理中的一项关键技术,用于提取视频中的前景对象。在视频监控、运动检测和行为分析等领域中,背景建模被广泛应用。其基本思想是通过对视频序列中的像素进行建模&#xff…

构建中国人自己的私人GPT—限时免费部署

在现实生活中,很多公司或个人的资料是不愿意公布在互联网上的,但是我们又要使用人工智能的能力帮我们处理文件、做决策、执行命令那怎么办呢?于是我们构建自己或公司的本地专属GPT变得非常重要。 先看效果: 解方程,24小…

用友GRP-U8 obr_zdybxd_check.jsp SQL注入漏洞复现

0x01 产品简介 用友GRP-U8R10行政事业内控管理软件是用友公司专注于国家电子政务事业,基于云计算技术所推出的新一代产品,是我国行政事业财务领域最专业的政府财务管理软件。 0x02 漏洞概述 用友GRP-U8R10行政事业内控管理软件 obr_zdybxd_check.jsp 接口处存在SQL注入漏洞…

day-13 拿出最少数目的魔法豆

思路 将beans的每个数值当做袋子最后豆子剩余数,选择取豆子最少的一种方案 解题方法 //从小到大,将每个beans[i]作为剩余豆子数 //对于beans[i],i之前的全为零,i之后的全变为beans[i] ansMath.min(ans,sum-(beans.length-i)*bean…

esp32-idf eclipse 定时器的使用demo

esp32定时器的使用demo 1、介绍 ESP32芯片包含两个硬件定时器组。每组有两个通用硬件定时器。它们都是基于16位预分频器和64位自动重载功能的向上向下计数器的64位通用定时器。 2、API接口函数 创建定时器函数: esp_timer_create(); esp_err_t esp_timer_create …

动态pv(nfs方式挂载)

1、定义 发布pvc之后可以生成pv,还可以在共享服务器上直接生成挂载目录 pvc直接绑定和使用pv 2、动态pv依赖两个组件 (1)provisioner卷插件:k8s本身支持的动态pv创建不包括nfs,需要声明和安装一个外部插件provisio…

16.鸿蒙HarmonyOS App(JAVA)滑块组件Slider与评级组件Rating

16.鸿蒙HarmonyOS App(JAVA)滑块组件Slider与评级组件Rating ability_main.xml <?xml version"1.0" encoding"utf-8"?> <DirectionalLayoutxmlns:ohos"http://schemas.huawei.com/res/ohos"ohos:height"match_parent"oh…

「优选算法刷题」:盛最多水的容器

一、题目 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明&#xff1a;你不能倾斜容器…

第29关 阿里云开源的k8s容器秒级事件监控软件-Kube-eventer

------> 课程视频同步分享在今日头条和B站 大家好&#xff0c;我是博哥爱运维。这节课给大家分析一款K8S上宝藏级秒级事件监控报警的开源软件kube-eventer&#xff0c;它是由阿里云开源的&#xff0c;并且难得的还一直有在更新。 天下武功&#xff0c;唯快不破。对于报警监…

ClickHouse学习笔记(六):ClickHouse物化视图使用

文章目录 1、ClickHouse 物化视图2、物化视图 vs 普通视图3、物化视图的优缺点4、物化视图的用法4.1、基本语法4.2、准备表结构4.3、准备数据4.4、查询结果 1、ClickHouse 物化视图 ClickHouse 的物化视图是一种查询结果的持久化&#xff0c;它的存在是为了带来查询效率的提升…

鸿蒙OS4.0兼容性测试

背景 OpenHarmony兼容性测评主要是验证合作伙伴的设备和业务应用满足OpenHarmony开源兼容性定义的技术要求&#xff0c;确保运行在OpenHarmony上的设备和业务应用能稳定、正常运行&#xff0c;同时使用OpenHarmony的设备和业务应用有一致性的接口和业务体验。 OpenHarmony兼容…

MySQL存储函数和存储过程练习题

一、创建表的要求 字段名 数据类型 主键 外键 非空 唯一 自增 id INT 是 否 是 是 否 name VARCHAR(50) …

Peter:经济形势不好,一个最大的原因就是诚信道德的缺失 | 程客有话说002

《程客有话说》是我们最新推出的一个访谈栏目&#xff0c;邀请了一些国内外有趣的程序员来分享他们的经验、观点与成长故事&#xff0c;我们尝试建立一个程序员交流与学习的平台&#xff0c;也欢迎大家推荐朋友或自己来参加我们的节目&#xff0c;一起加油。本期我们邀请的程序…
最新文章