【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。

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

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

相关文章

SpringBoot poi-tl通过模板占位符生成word文件

简介: 开发中我们需要通过在word中使用占位符来动态渲染一些数据,本文讲解poi-tl实现动态生成word文档,包括表格循环,对象嵌套。 poi-tl官网文档 Poi-tl Documentation 1. word格式 这是我的test.word 这是导出后的out.docx文件 …

详解Pectra升级:如何影响以太坊价值及利益相关者

Pectra很可能是最后几个会直接影响用户和ETH持有者的升级之一。 原文:Galaxy Research;编译:Golem;编辑:郝方舟 出品 | Odaily星球日报(ID:o-daily) 编者按:以太坊 Pectr…

了解 WebSocket

了解 WebSocket 轮询方式、短轮询长轮询SSE WebSocket为什么说 WebSocket 是基于 Http 协议的?如何通过 Sec-WebSocket-Key 与 验证 Sec-WebSocket-Accept验证 demo SpringBoot 中使用 WebSocket引入依赖增加 WebSocketConfig修改 ServerEndpointConfig定义 ServerE…

保研考研机试攻略:python笔记(1)

🐨🐨🐨宝子们好呀 ~ 我来更新欠大家的python笔记了,从这一篇开始我们来学下python,当然,如果只是想应对机试并且应试语言以C和C为主,那么大家对python了解一点就好,重点可以看高分篇…

易基因:Nat Commun:ATAC-seq等揭示恒河猴大脑高分辨率解剖区域的转录组和开放染色质图谱

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 恒河猴是神经科学研究中常用的模型动物,其大脑结构和功能与人类大脑相似。大脑中复杂的遗传网络是灵长类动物行为、认知和情感的基础,一直是神经科学的核心。大脑…

禾川SV-X2E A伺服驱动器参数设置——脉冲型

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家!人工智能学习网站 前言: 大家好,我是上位机马工,硕士毕业4年年入40万,目前在一家自动化公司担任…

【Android】基础回顾--四大组件

1. 四大组件是什么? 四大组件:Activity、Service、BroadcastReceiver、ContentProvider。 2. 四大组件的生命周期和简单用法 Activity: 特殊情况下的生命周期: 典型的生命周期好像没什么可说的,主要说一下特殊情况…

基于Datawhale开源量化投资学习指南(11):LightGBM在量化选股中的优化与实战

1. 概述 在前几篇文章中,我们初步探讨了如何通过LightGBM模型进行量化选股,并进行了一些简单的特征工程和模型训练。在这一篇文章中,我们将进一步深入,通过优化超参数和实现交叉验证来提高模型的效果,并最终通过回测分…

C++ | Leetcode C++题解之第516题最长回文子序列

题目&#xff1a; 题解&#xff1a; class Solution { public:int longestPalindromeSubseq(string s) {int n s.length();vector<vector<int>> dp(n, vector<int>(n));for (int i n - 1; i > 0; i--) {dp[i][i] 1;char c1 s[i];for (int j i 1; j…

2-135 基于matlab的有限差分法计算电位分布

基于matlab的有限差分法计算电位分布&#xff0c;设置目标尺寸的矩形区域&#xff0c;设置矩形区域内的网格数量&#xff0c;根据网格位置在区域内设置电位&#xff0c;实现电位分布计算。程序已调通&#xff0c;可直接运行。 下载源程序请点链接&#xff1a;2-135 基于matlab…

微信小程序的日期区间选择组件的封装和使用

组件化开发是一种将大型软件系统分解为更小、更易于管理和复用的独立模块或组件的方法。这种方法在现代软件开发中越来越受到重视&#xff0c;尤其是在前端开发领域。微信小程序的日期区间选择组件的使用 wxml 代码 <view><view bind:tap"chooseData">…

【Redis】内存淘汰策略

文章目录 什么是内存淘汰策略设置Redis最大内存执行内存淘汰策略的流程Redis的八大内存淘汰策略深入源码进行理解内存淘汰策略流程 什么是内存淘汰策略 Redis内存淘汰策略是指当Redis的内存使用达到其配置的最大内存限制&#xff08;maxmemory&#xff09;时&#xff0c;Redis…

论文笔记(五十)Segmentation-driven 6D Object Pose Estimation

Segmentation-driven 6D Object Pose Estimation 文章概括摘要1. 引言2. 相关工作3. 方法3.1 网络架构3.2 分割流3.3 回归流3.4 推理策略 4. 实验4.1 评估 Occluded-LINEMOD4.1.1 与最先进技术的比较4.1.2 不同融合策略的比较4.1.3 与人体姿态方法的比较 4.2 在YCB-Video上的评…

uniapp使用easyinput文本框显示输入的字数和限制的字数

uniapp使用easyinput文本框显示输入的字数和限制的字数 先上效果图&#xff1a; 整体代码如下&#xff1a; <template><view class"nameInfoContent"><uni-easyinput class"uni-mt-5" suffixIcon"checkmarkempty" v-model&quo…

【MyBatis源码】SqlSessionFactoryBuilder源码分析

文章目录 概述类结构从 InputStream 创建 SqlSessionFactoryXMLConfigBuilder构建ConfigurationXMLConfigBuilder初始化方法parse()方法parseConfiguration属性&#xff08;properties&#xff09; 概述 SqlSessionFactory 是 MyBatis 的核心接口之一&#xff0c;提供创建 Sql…

vue通过JSON文件生成WPML文件源码

可以使用封装的json解析器进行JSON数据获取&#xff0c;读取点的经度、维度、高程等数据&#xff0c;再使用对应的WPML文件生成函数使用该源码下载WPML文件&#xff08;固定WPML生成&#xff1a;js模板式生成大疆上云wpml文件&#xff08;含详细注释&#xff0c;已封装成函数&a…

(7) cuda异常处理

文章目录 上节概要异常处理代码 上节概要 上一节 block_width 64的时候&#xff0c;64644096 > 1024&#xff08;一个block里面最多只能有1024个线程&#xff0c;所以这里计算会有问题&#xff09; 异常处理 __FILE__: 编译器内部定义的一个宏。表示的是当前文件的文件…

【C++单调栈 贡献法】907. 子数组的最小值之和|1975

本文涉及的基础知识点 C单调栈 LeetCode907. 子数组的最小值之和 给定一个整数数组 arr&#xff0c;找到 min(b) 的总和&#xff0c;其中 b 的范围为 arr 的每个&#xff08;连续&#xff09;子数组。 由于答案可能很大&#xff0c;因此 返回答案模 109 7 。 示例 1&#x…

项目:Boost 搜索引擎

项目&#xff1a;Boost 搜索引擎 1、项目背景 公司&#xff1a;百度、360、搜狗、谷歌 …站内搜索&#xff1a;搜索的数据更垂直&#xff08;相关&#xff09;&#xff0c;数据量小 2、整体框架 3、技术栈和项目环境 技术栈&#xff1a;C/C C11&#xff0c;STL&#xff0c;jso…

error Unexpected mutation of “xxxxx“ prop

错误是在进行 eslint 检查的时候触发的&#xff0c;这个错误的原因是我们在子组件中改变了父组件传递过来的 props 解决方法一&#xff1a; 不改变父组件传递过来的 props&#xff0c;如果需要改变父组件传递过来的值&#xff0c;可以使用 defineModel() 进行接收值&#xff…