JVM中的GC流程与对象晋升机制

JVM中的GC流程与对象晋升机制

    • 1、JVM堆内存结构
    • 2、Minor GC流程
    • 3、Full GC流程
    • 4、总结


💖The Begin💖点点关注,收藏不迷路💖

在Java虚拟机(JVM)中,垃圾回收(GC)是自动管理内存的关键机制。

1、JVM堆内存结构

Java堆是JVM中用于存放对象实例的内存区域,它被划分为新生代(Young Generation)和老年代(Old Generation)。新生代又进一步细分为Eden区、两个Survivor区(S0和S1,也称为From和To区,它们通过复制算法交换角色)。

2、Minor GC流程

当Eden区的空间被新创建的对象填满时,JVM会触发Minor GC(也称为Young GC)。Minor GC的目标是清理新生代中的垃圾对象,回收其占用的内存空间。

  • 收集与清理:JVM会扫描Eden区和当前的Survivor区(如S0),标记出存活的对象。
  • 复制与交换:存活的对象会被复制到另一个空的Survivor区(如S1),同时清空Eden区和原来的Survivor区(S0)。这时,S0和S1的角色会互换。
  • 对象晋升:在Minor GC过程中,如果对象满足以下条件之一,它们会被直接晋升到老年代:
    • 大对象:需要大量连续内存空间的对象,这些对象在创建时如果Eden区剩余空间不足,会直接分配到老年代。
    • 长期存活:对象在Eden区出生,并经过多次Minor GC后仍然存活,并且被Survivor区容纳。每次Minor GC后,对象的年龄(即经过的Minor GC次数)会增加。当年龄达到JVM设定的阈值(默认为15)时,对象会被晋升到老年代。

3、Full GC流程

当老年代空间不足时,JVM会触发Full GC(也称为Major GC或Old GC)。Full GC会清理整个堆内存,包括新生代和老年代。

  • 停止-复制/标记-清除/标记-整理:根据JVM使用的垃圾回收器类型(如Serial GC、Parallel GC、CMS、G1等),Full GC会采用不同的算法来清理垃圾对象。这些算法包括停止-复制、标记-清除和标记-整理等。
  • 性能影响:Full GC通常比Minor GC慢得多,因为它需要处理整个堆内存。在Full GC期间,应用程序的线程会暂停(Stop-The-World),直到GC完成。

4、总结

通过合理设置JVM参数、优化代码逻辑和内存使用,可以减少GC的频率和持续时间,提高应用的响应速度和吞吐量。

在这里插入图片描述


💖The End💖点点关注,收藏不迷路💖

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

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

相关文章

VTK源码分析:Type System

作为一款开源跨平台的数据可视化代码库,VTK以其清晰的流水线工作方式、丰富的后处理算法、异种渲染/交互方式,而被众多CAx软件选作后处理实施方案。而异种渲染/交互方式的实现,主要是倚重于VTK的类型系统,因此,有必要对…

最新 Docker 下载镜像超时解决方案:Docker proxy

现在Docker换源也下载失败太常见了,至于原因,大家懂得都懂。本文提供一种简洁的方案, 利用 Docker 的http-proxy,代理至本机的 proxy。 文章目录 前言Docker proxy 前言 这里默认你会安装 clash,然后有配置和数据库。…

排序算法

排序算法 内部排序:指将需要处理的所有数据都加载到内部存储器中进行排序 外部排序:数据量过大,无法全部加载到内存中,需要借助外部存储进行排序 算法的时间复杂度 一个算法花费的时间与算法中语句的执行次数成正比,…

Unity XR Interaction Toolkit(VR、AR交互工具包)记录安装到开发的流程,以及遇到的常见问题(一)!

提示:文章有错误的地方,还望诸位大神不吝指教! 文章目录 前言一、XR Interaction Toolkit是什么?二、跨平台交互三、 AR 功能四、XR Interaction Toolkit的特点五、XR Interaction Toolkit 示例总结 前言 随着VR行业的发展&#…

一文搞懂 Java 基础:新手入门必备

目录 📝 Java基础Java起源第一个Java程序基础语法Java标识符Java变量Java注释Java数据类型Java运算符Java流程控制语句 📝 Java基础 Java起源 Java programming language具有大部分编程语言所共有的一些特征,被特意设计用于互联网的分布式环…

《算法笔记》总结No.10——链表

从第10期破例插叙一期单链表的实现,这个东东相当重要!考研的同学也可以看:相较于王道考研的伪码不太相同,专注于可以运行。如果是笔试中的伪码,意思正确即可~ 注:博主之前写过一个版本的顺序表和单链表的C实…

Jolt路线图

1. 引言 a16z crypto团队2024年7月更新了其Jolt路线图: 主要分为3大维度: 1)链上验证维度: 1.1)Zeromorph:见Aztec Labs团队2023年论文 Zeromorph: Zero-Knowledge Multilinear-Evaluation Proofs from…

视觉巡线小车——STM32+OpenMV

系列文章目录 第一章:视觉巡线小车——STM32OpenMV(一) 第二章:视觉巡线小车——STM32OpenMV(二) 第三章:视觉巡线小车——STM32OpenMV(三) 第四章:视觉巡…

【过题记录】 7.21

Mad MAD Sum 算法&#xff1a;思维&#xff0c;前缀最大值 模拟一下他的运行过程就会发现&#xff0c;两次之后整个数组就固定了&#xff0c;之后每次都是每个数往后移动一位&#xff0c;可以模拟两次之后计算每个数的存活轮数&#xff0c;计算贡献。 #include<bits/stdc.h…

JavaSE 知识梳理(下)

1.继承 继承是面向对象程序设计使代码可以复用的最重要的手段&#xff0c;它允许程序员在保持原有类特 性 的基础上进行扩展&#xff0c;增加新功能&#xff0c;这样产生新的类&#xff0c;称派生类。 继承主要解决的问题是&#xff1a;共性的抽取&#xff0c;实现代码复用&a…

【D3.js in Action 3 精译_018】2.4 向选择集添加元素

当前内容所在位置 第一部分 D3.js 基础知识 第一章 D3.js 简介&#xff08;已完结&#xff09; 1.1 何为 D3.js&#xff1f;1.2 D3 生态系统——入门须知1.3 数据可视化最佳实践&#xff08;上&#xff09;1.3 数据可视化最佳实践&#xff08;下&#xff09;1.4 本章小结 第二章…

【PyTorch】图像二分类项目-部署

【PyTorch】图像二分类项目 【PyTorch】图像二分类项目-部署 在独立于训练脚本的新脚本中部署用于推理的模型&#xff0c;需要构造一个模型类的对象&#xff0c;并将权重加载到模型中。操作流程为&#xff1a;定义模型--加载权重--在验证和测试数据集上部署模型。 import torch…

基于PSO算法优化PID参数的一些问题

目录 前言 Q1&#xff1a;惯性权重ω如何设置比较好&#xff1f;学习因子C1和C2如何设置&#xff1f; Q2&#xff1a;迭代速度边界设定一定能够遍历&#xff08;/覆盖&#xff09;整个PID参数二维空间范围吗&#xff1f;还是说需要与迭代次数相关&#xff1f;迭代次数越高&a…

MATLAB图像处理分析基础(一)

一、引言 MATLAB软件得到许多数字图像处理学生、老师和科研工作者的喜爱&#xff0c;成为数字图像处理领域不可或缺的工具之一&#xff0c;其与其他软件相比有以下诸多显著优点。首先&#xff0c;MATLAB 拥有强大的内置函数库&#xff0c;涵盖了图像读取、显示、处理及分析的全…

【学习笔记】无人机系统(UAS)的连接、识别和跟踪(九)-无人机区域地面探测与避让(DAA)

引言 3GPP TS 23.256 技术规范&#xff0c;主要定义了3GPP系统对无人机&#xff08;UAV&#xff09;的连接性、身份识别、跟踪及A2X&#xff08;Aircraft-to-Everything&#xff09;服务的支持。 3GPP TS 23.256 技术规范&#xff1a; 【免费】3GPPTS23.256技术报告-无人机系…

ESP8266模块(2)

实例1 查看附近的WiFi 步骤1&#xff1a;进入AT指令模式 使用USB转串口适配器将ESP8266模块连接到电脑。打开串口终端软件&#xff0c;并设置正确的串口和波特率&#xff08;通常为115200&#xff09;。输入以下命令并按回车确认&#xff1a; AT如果模块响应OK&#xff0c;…

【计算机网络】0 课程主要内容(自顶向下方法,中科大郑烇、杨坚)(待)

1 教学目标 掌握计算机网络 基本概念 工作原理 常用技术 为将来学习、应用和研究计算机网络打下坚实基础 2 课程主要内容 1 计算机网络和互联网2 应用层3 传输层4 网络层&#xff1a;数据平面5 网络层&#xff1a;控制平面6 数据链路层和局域网7 网络安全8 无线和移动网络9 多…

构建gitlab远端服务器(check->build->test->deploy)

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录前言构建gitlab远端服务器一、步骤一:搭建gitlab的运行服务器【运维】1. 第一步:硬件服务器准备工作(1)选择合适的硬件和操作系统linux(2)安装必…

Learning vtkjs之WarpScalar

过滤器 WarpScalar 介绍 先看一个官方的一句话介绍&#xff1a; vtkWarpScalar - deform geometry with scalar data vtkWarpScalar - 使用标量数据变形几何体 详细介绍 vtkWarpScalar is a filter that modifies point coordinates by moving points along point normals by…

spss数据分析是什么 怎么下载spss

什么是SPSS SPSS是社会统计科学软件包的简称&#xff0c; 其官方全称为IBM SPSS Statistics。SPSS软件包最初由SPSS Inc.于1968年推出&#xff0c;于2009年被IBM收购&#xff0c;主要运用于各领域数据的管理和统计分析。作为世界社会科学数据分析的标准&#xff0c;SPSS操作操作…