【jvm】堆的内部结构

目录

          • 1. 说明
          • 2. 年轻代(Young Generation)
            • 2.1 说明
            • 2.2 Eden区
            • 2.3 Survivor区
          • 3. 老年代(Old Generation)
            • 3.1 说明
            • 3.2 对象存放
            • 3.3 垃圾回收
          • 4. jdk7及之前
          • 5. jdk8及之后

1. 说明
  • 1.JVM堆的内部结构主要包括年轻代(Young Generation)和老年代(Old Generation),这种划分是基于对象的存活时间和使用特点来进行的。
2. 年轻代(Young Generation)
2.1 说明
  • 1.年轻代是堆内存的一部分,主要用于存放新生成的对象。
  • 2.由于新生成的对象大多都很快变得不可达,因此年轻代的设计目标是尽快回收这些对象所占用的内存。
2.2 Eden区
  • 1.新生成的对象首次会尝试在Eden区中分配内存。
  • 2.Eden区是年轻代中最大的区域,用于存放大多数新生成的对象。
2.3 Survivor区
  • 1.Survivor区被划分为两个相等的部分,通常称为From Survivor(S0)和To Survivor(S1),或者简称为S0和S1。
  • 2.在发生Minor GC(年轻代垃圾回收)时,存活的对象会从Eden区和当前的Survivor区(比如S0)复制到另一个Survivor区(比如S1),然后清空原来的区域。
  • 3.经过多次Minor GC后,仍然存活的对象会被转移到老年代中。
3. 老年代(Old Generation)
3.1 说明
  • 1.老年代是堆内存的一部分,用于存放那些经过多次年轻代垃圾回收后仍然存活的对象。
  • 2.这些对象通常生命周期较长,因此老年代的设计目标是提供稳定的内存空间,
  • 3.以减少垃圾回收的频率和开销。
3.2 对象存放
  • 1.当年轻代中的对象存活时间较长,或者年轻代空间不足无法容纳新生成的对象时,这些对象会被转移到老年代中。
3.3 垃圾回收
  • 1.老年代的垃圾回收通常称为Major GC或Old GC。
  • 2.由于老年代中的对象存活时间较长,因此Major GC通常比Minor GC更耗时。
  • 3.Major GC会扫描整个老年代空间,并回收那些不再被引用的对象所占用的内存。
4. jdk7及之前
  • 1.堆结构图。
    在这里插入图片描述
  • 2.Java 7及之前堆内存逻辑上分为三部分:新生区+养老区+永久区。
  • 3.新生区:Young Generation Space,Young/New。
  • 4.新生区被划分为Eden区和Survivor区。
  • 5.养老区:Tenure generation space,Old/Tenure。
  • 6.永久区:Permanent Space,Perm。
5. jdk8及之后
  • 1.堆结构图。
    在这里插入图片描述

  • 2.Java 8及以后堆内存逻辑上分为三部分:新生区+养老区+元空间。

  • 3.新生区:Young Generation Space,Young/New。

  • 4.新生区被划分为Eden区和Survivor区。

  • 5.养老区:Tenure generation space,Old/Tenure。

  • 6.元空间:Meta Space,Meta。

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

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

相关文章

录屏软件推荐,4个工具助你高效录屏。

不同的录屏软件具有不同的特点和优势,如果只是偶尔需要录制,Win10 自带的录制功能就很方便;如果需要更加专业的录制和编辑功能,我可以推荐几款功能更加多样也效果较好的第三方软件。 1、福昕高清录屏 直达:www.foxits…

SVM(支持向量机)

SVM(支持向量机) 引言 支持向量机(Support Vector Machine,SVM),可以用来解答二分类问题。支持向量(Support Vector):把划分数据的决策边界叫做超平面,点到超平面的距离叫做间隔。在SVM中,距离超平面最近…

基于neo4j的新冠治疗和新冠患者轨迹的知识图谱问答系统

毕业设计还在苦恼选题?想做一个兼具前沿性和实用性的技术项目?了解下这款基于Neo4j的新冠治疗和患者轨迹的知识图谱问答系统吧! 系统可以实现两大功能模块:新冠医疗信息和患者活动轨迹的展示与问答。通过图谱技术,你可…

VBA技术资料MF219:创建一个新的类型模块

我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套,分为初级、中级、高级三大部分,教程是对VBA的系统讲解&#…

【方波转正弦波谐波二阶】2022-6-10

缘由怎么用555时基电路将方波转换为正弦波?-其他-CSDN问答 可参带通滤波器电路图大全(三款带通滤波器电路设计原理图详解) - 全文 - 应用电子电路 - 电子发烧友网

《关于构图问题》

这是一本讲绘画技巧的书,但仔细琢磨体现出不易察觉的东方哲学思想。中国画讲究意境与留白,留白不代表“空”,而是代表对“实”的延伸,留下瞎想空间,实现对“有限(实)”的超越。 总论 文艺是人们…

演员王丹妮化身岛屿姐姐 开启少年们的欢乐挑战之旅

全民海岛真人秀《岛屿少年》正在持续热播中,少年们迎来了“茶嵛饭后”⻩⻥馆的开业日,知名演员王丹妮以岛屿姐姐的身份,悄然降临此地,为岛屿少年们带来了一场别开生面的考验。 在餐厅正式开业前夕,王丹妮巧妙地伪装成普…

【Spark+Hive大数据】基于spark抖音数据分析预测舆情系统(完整系统源码+数据库+开发笔记+详细部署教程)✅

目录 【SparkHive大数据】基于spark抖音数据分析预测舆情系统(完整系统源码数据库开发笔记详细部署教程)✅ 一、项目背景 二、研究目的 三、项目意义 四、项目功能 五、项目创新点​​​​​​​ 六、算法介绍 七、项目展示 八、启动文档 九、…

Android Kotlin中协程详解

博主前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住也分享一下给大家, 👉点击跳转到教程 前言 Kotlin协程介绍: Kotlin 协程是 Kotlin 语言中的一种用于处理异步编程的机制。它提供了一…

Chromium127调试指南 Windows篇 - 安装C++扩展与配置(五)

前言 在前面的文章中,我们已经安装了Visual Studio Code(VS Code)并配置了基本的扩展。现在,我们将进一步优化我们的开发环境,重点关注C相关的依赖扩展。这些扩展对于在VS Code中高效开发和调试Chromium项目至关重要。…

如何在 Linux 中对 USB 驱动器进行分区

如何在 Linux 中对 USB 驱动器进行分区 一、说明 为了在 Linux 上访问 USB 驱动器,它需要有一个或多个分区。由于 USB 驱动器通常相对较小,仅用于临时存储或轻松传输文件,因此绝大多数用户会选择只配置一个跨越整个 USB 磁盘的分区。但是&a…

基于Django+python的车牌识别系统设计与实现(带文档)

项目运行 需要先安装Python的相关依赖:pymysql,Django3.2.8,pillow 使用pip install 安装 第一步:创建数据库 第二步:执行SQL语句,.sql文件,运行该文件中的SQL语句 第三步:修改源…

Unity C#脚本的热更新

以下内容是根据Unity 2020.1.0f1版本进行编写的   目前游戏开发厂商主流还是使用lua框架来进行热更,如xlua,tolua等,也有的小游戏是直接整包更新,这种小游戏的包体很小,代码是用C#写的;还有的游戏就是通过…

【mysql进阶】4-5. InnoDB 内存结构

InnoDB 内存结构 1 InnoDB存储引擎中内存结构的主要组成部分有哪些? 🔍 分析过程 从官⽹给出的InnoDB架构图中可以找到答案 InnoDB存储引擎架构链接:https://dev.mysql.com/doc/refman/8.0/en/innodb-architecture.html ✅ 解答问题 InnoD…

ECharts饼图-富文本标签,附视频讲解与代码下载

引言: 在数据可视化的世界里,ECharts凭借其丰富的图表类型和强大的配置能力,成为了众多开发者的首选。今天,我将带大家一起实现一个饼图图表,通过该图表我们可以直观地展示和分析数据。此外,我还将提供详…

虚拟光驱软件 PowerISO v8.7.0 中文激活版

PowerISO 是一款虚拟光驱工具及强大的光盘映像文件制作工具。支持创建、编辑、提取、压缩、加密和转换ISO/BIN图像文件。同时自带DISM工具,支持ESD/ISO/WIM/ESD格式转换,制作镜像文件制作U盘启动,支持ISO/BIN/IMG/DAA/WIM等各种常见文件类型。…

【Nas】X-Doc:jellyfin“该客户端与媒体不兼容,服务器未发送兼容的媒体格式”问题解决方案

【Nas】X-Doc:jellyfin“该客户端与媒体不兼容,服务器未发送兼容的媒体格式”问题解决方案 当使用Jellyfin播放视频时出现“该客户端与媒体不兼容,服务器未发送兼容的媒体格式”,这是与硬件解码和ffmpeg设置有关系,具体…

机器学习新领域:联邦学习方法——分布式机器学习

联邦学习是一种分布式机器学习方法,旨在保护数据隐私并提高模型的训练效率。以下是对联邦学习的详细介绍,包括其基本概念、应用场景以及面临的挑战。 一、介绍 1. 基本概念 联邦学习的核心思想是将模型训练过程分散到多个数据源上,而不需要…

生产级AI智能体开发实践【旅行规划】

在我最近的博客文章《使用 LangChain 代理创建多模式聊天机器人的开发人员指南》中,讨论了 AI 代理的作用,并演示了使用 LangChain 框架的实现。虽然它适用于概念验证 (POC),但它不适合生产环境。 在这篇文章中,我将提供一种更适…

移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——15.C++11(1)

1. 自动类型推导 (auto) C11 引入了 auto 关键字&#xff0c;可以根据初始值的类型自动推导变量的类型&#xff0c;从而减少了手动声明类型的繁琐。例如&#xff1a; std::vector<int> vec {1, 2, 3, 4}; auto it vec.begin(); // 自动推导类型为 std::vector<in…