JVM何时GC

何时进行GC

垃圾回收(GC)主要分为两类:Minor GC(也称Young GC)和Full GC(或Major GC)**,主要依据内存使用情况和对象生命周期进行触发。

  • Minor GC主要针对**年轻代(Young Generation),当Eden区满时触发。存活对象被复制到Survivor区,经过几次GC后年龄足够老的对象晋升至老年代。
  • Full GC清理**整个堆内存,包括年轻代和老年代。当老年代空间不足时触发,或年轻代晋升失败(对象太大无法容纳于老年代剩余空间)时。

GC的触发是自动的,系统根据内存使用状况动态决策,不可精确预测。

何物:可达性分析与GC Roots

JVM通过可达性分析判断对象是否可回收,基于GC Roots(根对象集合)开始追溯。根对象包括:

  • 活栈帧中的本地变量
  • 静程
  • 静象静态字段
  • JNI引用
    未被根引用的对象被视为不可达,可回收。
如何行动:回收过程

新生代主要采用复制算法老年代采用标记-整理(Mark-Compact)或标记-清除(Mark-Sweep)算法

  • 新生代

    • Eden区满,存活对象复制到Survivor区。 - 经历次GC,对象在Survivor间迁移,年龄增长。 - 达阈值,晋升至老年代。
    • 复制算法避免内存碎片,提升分配效率,但牺牲了部分空间。
  • 老年代

    • 标记清除:标记存活对象,清除不可达对象。 - 整理:标记后,移动存活对象,消除碎片,更新引用。
  • 适用于对象生存周期长、碎片整理,但处理成本较高。

标记-清除:遍历对象图,标记可达对象,清除未标记对象。缺点是效率低,留下碎片。
标记-整理在清除基础上,移动存活对象,更新引用,减少碎片,但成本更高。

JVM根据内存使用模式、对象年龄、代际需求,动态选择算法,以优化GC时机和策略,确保内存高效管理。

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

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

相关文章

Centos修改系統語言

一、使用命令行修系统语言 1、显示系统当前语言环 [rootkvm-suma ~]# localectl System Locale: LANGen_US.utf8 VC Keymap: cn X11 Layout: cn 2、查看系统支持字符集 [rootkvm-suma ~]# locale -a 2、设置系统语言环境 [rootkvm-suma ~]# localectl set-locale LANGz…

【CMake】CMake入门(三)常见的cmake脚本指令 日志输出 CMake内置的变量

本篇文章不是新手入门教学文章,主要是记录笔者个人的学习笔记 CMake入门(三) 一、CMake中的脚本指令1. 设置CMake最低版本要求2、指定项目名称3、添加生成的可执行文件4、添加生成库文件5、搜索文件6、生成文件7、添加子目录8、添加头文件的搜…

【GESP试卷】2024年03月Scratch四级试卷

2024年GESP03月认证Scratch四级试卷 分数:100 题数:27 一、单选题(共15题,每题2分,共30分) 010203040506070809101112131415CDBBACBCDCDADBA 1、小杨的父母最近刚刚给他买了一块华为手表,他说手表上跑的是鸿蒙&…

【雷丰阳-谷粒商城 】【分布式基础篇-全栈开发篇】【00】补充

持续学习&持续更新中… 守破离 【雷丰阳-谷粒商城 】【分布式基础篇-全栈开发篇】【00】补充 插件IDEAVsCode MavenvagrantDocker解决MySQL连接慢问题启动(自动)Docker注意切换到root用户远程访问MySQL MyBatisPlus代码地址参考 插件 IDEA Mybati…

【数据挖掘】四分位数识别数据中的异常值(附代码)

写在前面: 首先感谢兄弟们的订阅,让我有创作的动力,在创作过程我会尽最大能力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌。 路虽远,行则将至&#…

c++11 auto类型推导的使用建议和注意事项

概述: 首先c是强类型语言,也就是在定义变量的时候必须指定具体的类型。 像我们常用的int,float,char等等都是类型,auto关键字原本的意思是说明某个变量是自动变量,c11提升了它的功能。 在c11之后,我们可以使…

STM32F1之OV7725摄像头

目录 1. 摄像头简介 2. OV7725 摄像头简介 3. OV7725 引脚 4. OV7725 功能框架图 5. SCCB时序 5.1 SCCB 的起始、停止信号及数据有效性 5.2 SCCB 数据读写过程 1. 摄像头简介 在各类信息中,图像含有最丰富的信息,作为机…

SVM原问题与对偶问题

目的:求出我们的f(X),它代表着我们X映射到多维的情况,能够帮我们在多维中招到超平面进行分类。 1.优化问题: 1.1推荐好书: 1.2 优化理论中的原问题: 原问题和限制条件如下: 这是一个泛化性…

MATLAB算法实战应用案例精讲-【数模应用】KANO模型

目录 前言 发展历程 几个相关概念 算法原理 什么是KANO模型?

【漏洞复现】英飞达医学影像存档与通信系统 WebJobUpload 任意文件上传漏洞

0x01 产品简介 英飞达医学影像存档与通信系统 Picture Archiving and Communicaton System,它是应用在医院影像科室的系统,主要的任务就是把日常产生的各种医学影像(包括核磁,CT,超声,各种X光机,各种红外仪…

LeetCode - 数组 - 四数之和

题目地址 描述 给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复)&#x…

python从入门到精通02

一、平均油耗计算 total float(input("请输入加油的总金额:")) kilometers int(input("请输入行驶的总里程:")) average total / kilometers print("平均油耗是:", average,"元/公里") 二、华氏…

删除当前磁盘空文件夹小工具

删除当前磁盘空文件夹小工具 chcp 65001 >nulecho off setlocal EnableDelayedExpansionecho 正在扫描空文件夹,请稍候...for /f "delims" %%d in (dir /ad /b /s "\*") do (set "folder%%d"dir /a /b "!folder!" | fi…

个人学习之路

大学的时候在学校学习的是java,没有兴趣,且罢 快毕业了,为了工作学了C和C,每每也是在煎熬之中度过,总是否定自己,想要放弃又重新拾起来,做了相关的工作 后面换了工作,转到了python…

Spring IOC深度解析:IOC容器的原理与高级特性详解

1. Spring IOC容器概述 Spring框架是Java企业级应用开发中的重量级选手,其中IOC(控制反转)是其核心功能之一。通过引入IOC容器,Spring改变了对象的创建方式及其依赖关系的管理,进而带来了应用程序设计的革命。 1.1 什…

cs与msf权限传递以及mimikatz抓取win2012明文密码

简单的介绍 cs与msf的简单介绍 我查找过资料得出,Cobalt Strike 的前身是 Armitage,而 Armitage 又可以理解为 Metasploit Framework 的图形界面版,因此 Cobalt Strike 与 Metasploit Framework 在很多地方都是兼容的,所以我们便…

【电子信息(工程)】电子通信创新创业教育综合

电子通信创新创业教育 阐述电磁场、电磁波和电磁频谱及应用一、电磁场 法拉第根据电流与磁场的关系,提出了电磁感应定律:如果电磁场中有处于运动状态下的闭合回路导体存在,流经该导体磁场的磁场强度和磁场量,通常都会出现相应的变化,电磁感应电流由此而产生。随后,英国的…

人工智能 框架 paddlepaddle 飞桨 使用指南 使用例子 线性回归模型demo 详解

安装过程&使用指南&线性回归模型 使用例子 本来预想 是安装 到 conda 版本的 11.7的 但是电脑没有gpu 所以 安装过程稍有变动,下面简单讲下 conda create -n paddle_env117 python=3.9 由于想安装11.7版本 py 是3.9 所以虚拟环境名称也是 paddle_env117 activa…

下载和安装AD19 - Altium Designer 19.1.9 Build 167

虽然有AD24 的安装资源,但是我比较喜欢19 这个数字[doge] 下载 仍然是从毛子网站源头进货:https://rutracker.net/forum/viewtopic.php?t5754276,网盘: https://pan.baidu.com/s/1ic31N4h7HS2FBu7JFll0YQ?pwdvjum 提取码: vjum 安装 压…

如何用pyecharts工具制作地图

# # 导入地图构建使用的包 # from pyecharts.charts import Map # from pyecharts.options import VisualMapOpts # # # 创建一个地图 # China_map Map() # # # 给地图准备数据 # data [ # ("北京市", 100), # ("上海市", 95), # ("深圳…