11. JVM中的分代回收

1. JVM介绍和运行流程-CSDN博客

2. 什么是程序计数器-CSDN博客

3. java 堆和 JVM 内存结构-CSDN博客

4. 虚拟机栈-CSDN博客

5. JVM 的方法区-CSDN博客

6. JVM直接内存-CSDN博客

7. JVM类加载器与双亲委派模型-CSDN博客

8. JVM类装载的执行过程-CSDN博客

9. JVM垃圾回收-CSDN博客

10. 垃圾回收的算法-CSDN博客

11. JVM中的分代回收-CSDN博客

12. JVM的垃圾回收器-CSDN博客

13. G1垃圾回收器-CSDN博客

14. 垃圾回收的引用区别-CSDN博客

15. JVM调优的参数设置-CSDN博客

16. JVM调优工具-CSDN博客


1. JVM中的分代回收

分代回收(Generational Collection)是一种基于对象生命周期特性的垃圾回收策略,其核心思想是:大多数对象的生命周期都很短,而存活时间较长的对象通常会继续存活更长时间

分代回收的基本原理

  1. 对象代际划分:将堆内存划分为不同代(Generation),通常分为年轻代(Young Generation)和老年代(Old Generation)

  2. 不同频率回收:对年轻代进行更频繁的垃圾回收,而对老年代进行较少频率的回收

  3. 晋升机制:存活足够长时间的年轻代对象会被晋升(Promote)到老年代


2. 分代回收算法

2.1 年轻代回收算法

通常使用复制算法(Copying):

  • 内存划分:年轻代分为Eden区和两个Survivor区(From和To)

  • 分配过程:新对象首先分配在Eden

  • 回收过程

    • 标记存活对象

    • 将存活对象复制到一个Survivor区(From→ToTo→From)

    • 清空Eden和另一个Survivor

    • 交换FromTo的角色

  • 晋升:对象在Survivor区之间经历一定次数(通常15次)的复制后,晋升到老年代

分配过程图示:

对于新生代,内部又被分为了三个区域:

  • 伊甸园区Eden,新生的对象都分配到这里
  • 幸存者区survivor(分成from和to)
  • Eden区,from区,to区 8 : 1 : 1

1. 新对象首先分配在Eden区

2. 当伊甸园内存不足,标记伊甸园与from(现阶段没有)的存活对象

 假如咱们在伊甸园区内标记的是 “A对象”,from(现阶段没有)

3. 将存活对象采用复制算法复制到 to 中,复制完毕后,伊甸园和 from 内存都得到释放

4. 经过一段时间后伊甸园的内存又出现不足,标记eden区域to区存活的对象,将存活的对象复制到from区

假如伊甸园区咱们标记的 “1对象to 区标记 “A对象”。

转移后如下:

 5. 对象在Survivor区之间经历一定次数(通常15次)的复制后,晋升到老年代(幸存区内存不足或大对象会导致提前晋升)

假如这次 Eden区存货的对象是 “w对象”,Survivor区经历一定次数依旧存活的是 “A对象”。

转移复制后的结果如下:


2.2 老年代回收算法

通常使用标记-清除-整理算法(Mark-Sweep-Compact):

  • 标记阶段:标记所有存活对象

  • 清除阶段:回收未标记的对象空间

  • 整理阶段:将存活对象向一端移动,减少内存碎片

2.3 跨代引用处理

分代回收需要处理跨代引用问题,通常使用记忆集(Remembered Set)或卡表(Card Table)来记录从老年代指向年轻代的引用,避免全堆扫描。


3. 问题总结

3.1 说一下JVM中的分代回收?

堆的区域划分:

  • 堆被分为了两份:新生代和老年代【1:2】
  • 对于新生代,内部又被分为了三个区域。Eden区,幸存者区survivor(分成from和to)【8:1:1】

对象回收分代回收策略:

  1. 新创建的对象,都会先分配到eden区
  2. 当伊甸园内存不足,标记伊甸园与 from(现阶段没有)的存活对象
  3. 将存活对象采用复制算法复制到to中,复制完毕后,伊甸园和 from 内存都得到释放
  4. 经过一段时间后伊甸园的内存又出现不足,标记eden区域to区存活的对象,将其复制到from区
  5. 当幸存区对象熬过几次回收(通常为15次),晋升到老年代(幸存区内存不足或大对象会提前晋升)

3.2 MinorGc、Mixed Gc、FullGc的区别是什么?

  • MinorGC【young GC】发生在新生代的垃圾回收,暂停时间短(STW)
  • Mixed GC 新生代 +老年代部分区域的垃圾回收,G1 收集器特有
  • FullGC:新生代+老年代完整垃圾回收,暂停时间长(STW),应尽力避免

STW(Stop-The-World):暂停所有应用程序线程,等待垃圾回收的完成。


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

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

相关文章

基于PaddleOCR的营业执照识别与数据分析系统

基于PaddleOCR的营业执照识别与数据分析系统 1. 项目概述 本项目旨在利用百度PaddleOCR技术识别营业执照图片中的关键信息,结合自然语言处理(NLP)和卷积神经网络(CNN)对OCR结果进行分类处理,最后对识别出的收入流水数据进行深度分析与可视化展示。系统将实现从图像识别到数…

SpringBoot JSON字典序列化翻译

🧩 一、效果预期 Data public class UserVO {private String status;DictTranslate(type "user_status")private String statusName; }最终返回 JSON: {"status": "1","statusName": "启用" }&#…

基于Java+Maven+Testng+Selenium+Log4j+Allure+Jenkins搭建一个WebUI自动化框架(5)失败用例截图与重试

在UI自动化测试用例执行过程中,经常会有很多不确定的因素导致用例执行失败,比如网络原因、环境问题等,所以我们有必要引入重试机制(失败重跑),来提高测试用例执行稳定性。准备工作:我们在进行失…

【Oracle】centos7静默安装oracle19c

静默安装三步骤: 1、数据库安装db_install.rsp(数据库软件安装响应文件)2、配置监听netca.rap(监听配置响应文件)3、建库dbca.rsp(建库响应文件)安装oracle19c先决条件准备: 1.检查主…

MCP基础知识二(实战通信方式之Streamable HTTP)

介绍 MCP 使用 JSON-RPC 2.0 作为其传输格式。传输层负责将 MCP 协议消息转换为 JSON-RPC 格式进行传输,并将接收到的 JSON-RPC 消息转换回 MCP 协议消息。其中SSE被废弃了(Server-Sent Events (SSE) - Deprecated) SSE as a standalone tra…

量子计算与AI的融合:开启智能革命的“量子跃迁”新范式

当量子计算的并行算力与人工智能的深度学习能力相遇,一场颠覆传统认知的技术革命正在酝酿。从药物研发到自动驾驶,从金融风控到气候预测,两者的融合不仅突破了经典计算的算力天花板,更催生出全新的算法范式与产业生态。本文将深入解析量子计算与AI融合的技术逻辑、核心突破…

【氮化镓】不同偏压应力下电荷俘获效应导致的P-GaN HEMT阈值电压不稳定性

2022年12月7日,意大利国家研究委员会微电子与微系统研究所的Giuseppe Greco等人在《Applied Physics Letters》期刊发表了题为《Threshold voltage instability by charge trapping effects in the gate region of p-GaN HEMTs》的文章,基于对p-GaN高电子迁移率晶体管(HEMTs…

ONLYOFFICE深度解锁系列.10-如何识别图像和PDF扫描件中的文本?用ONLYOFFICE的AI OCR轻松搞定!

ONLYOFFICE 文档版本 9.0带来多项 AI 关键改进,显著提升您处理电子表格和 PDF 文件的工作效率。本指南将重点介绍新增的 OCR 功能,并讲解如何在 PDF 编辑器中利用 AI 助手将图像转为可编辑文本。什么是 OCR 文字识别?OCR 技术能够扫描各类文档…

单例模式详解:确保一个类只有一个实例

在软件开发中,设计模式是解决常见问题的经典方案。单例模式(Singleton Pattern)作为创建型设计模式中最简单也最常用的一种,确保一个类只有一个实例,并提供一个全局访问点。本文将全面探讨单例模式的概念、多种实现方式…

Appdynamic 配置 PostgreSQL 收集器

配置 PostgreSQL 收集器 您可以使用数据库可见性监控任何版本的 PostgreSQL。 连接详细信息 部分场地描述创建新的收集器数据库类型您想要监控的数据库类型。代理人管理收集器的数据库代理。收藏家姓名您想要用来识别收集器的名称。连接详细信息主机名或 IP 地址运行数据库的机…

其他常见 HTTP 方法

除了最常用的四种方法(GET、POST、PUT、DELETE),HTTP 协议还定义了一些较少使用但非常有用的请求方法,常用于调试、部分更新、跨域预检等场景。1. HEAD 方法:获取响应头 特点: 用途:与 GET 类似…

Web应用防火墙(WAF)技术

目录 一:简介 1.1 Web安全现状 1.2 传统防御的局限性 二:Web应用防火墙技术解析 2.1 WAF核心架构 2.2 关键技术特性 三:WAF必要性 3.1 典型防护场景 3.2 与传统方案对比 四:进阶防护方案 4.1 智能WAF架构 4.2 关键技术…

机器学习之线性回归(七)

机器学习之线性回归(七) 文章目录机器学习之线性回归(七)一、线性回归线性回归超全指南:从“一条直线”到“正则化调参”的完整旅程0. 先对齐语言:标称型 vs 连续型1. 问题形式化2. 损失函数全景3. 求解方法…

基于开源AI大模型、AI智能名片与S2B2C商城小程序源码的用户价值引导与核心用户沉淀策略研究

摘要:在数字化商业生态中,用户留存与核心用户培育是产品成功的关键。本文聚焦开源AI大模型、AI智能名片与S2B2C商城小程序源码的协同应用,探讨如何通过技术赋能实现用户价值引导与核心用户沉淀。研究结合工业品供应链、美妆品牌、健康食品行业…

课题申报书成功率提升85%!借助大模型AI精准选题、搭综述框架及提炼创新点(附实操AI提示词)

大家好,感谢关注。我是七哥,一个在高校里不务正业,折腾用大模型AI实操的学术人。可以添加七哥(qige500)交流学术写作或ChatGPT、Claude等学术大模型AI领域相关问题,多多交流,相互成就,共同进步。 写一份高质量的课题申报书往往面临许多困难,对很多同仁来说,难就难在…

Spring之【写一个简单的IOC容器EasySpring】

目录 EasySpring 注解 EasyAutowired EasyComponent EasyComponentScan EasyLazy EasyPostConstruct EasyProtoType EasyValue Bean定义信息 EasyBeanDefinition 管理Bean定义信息 EasyBeanDefinitionRegister Aware EasyAware EasyBeanFactoryAware EasyBea…

Selenium动态网页爬虫编写与解释

使用Selenium来抓取动态网页。动态网页通常是指那些通过JavaScript动态加载内容的网页,这些内容在初始HTML中并不存在,因此使用传统的requests库无法获取到这些动态生成的内容。Selenium可以模拟浏览器行为,等待JavaScript执行并渲染页面&…

element el-table中使用el-image图片预览被其他表格遮挡

或者::v-deep .el-table__cell {position: static !important;}

MyBatis与Spring整合优化实战指南:从配置到性能调优

一、SqlSessionFactory配置最佳实践 1.1 数据源配置优化 <!-- Spring配置示例 --> <bean id"dataSource" class"com.zaxxer.hikari.HikariDataSource" destroy-method"close"><property name"driverClassName" value&q…

LUA(初学)

条件语句if if then endlocal a 2 if a < 6 thenprint(a) end2条件语句if else if then else endlocal a 2 local b 3 if a > 6 thenprint(a) elseprint(b) end3while循环语句 while do endlocal a 2 while a < 5 doa a 1print(a) end3 4 5for循环语句 for do …