【jvm】堆的内部结构

news2024/11/27 4:24:40

目录

          • 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.coloradmin.cn/o/2228026.html

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

相关文章

开源一款前后端分离的企业级网站内容管理系统,支持站群管理、多平台静态化,多语言、全文检索的源码

大家好,我是一颗甜苞谷,今天分享一款前后端分离的企业级网站内容管理系统,支持站群管理、多平台静态化,多语言、全文检索的源码。 前言 在当今的数字化时代,企业网站和个人博客已成为信息传播和品牌建设的重要渠道。…

OpenCV视觉分析之目标跟踪(4)目标跟踪类TrackerDaSiamRPN的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::TrackerDaSiamRPN 是 OpenCV 中用于目标跟踪的一个类,它实现了 DaSiam RPN(Deformable Siamese Region Proposal Net…

雷池社区版配置同步试用

雷池社区版配置同步试用 雷池社区版在 7.0.0 版本引入了多节点配置同步 使用步骤 1. 获取连接命令 在主节点点击成为主节点后,会出现一个地址,该地址用于从节点连接主节点,获取主节点的配置,所以要保障从节点能够连接到主节点…

【动手学电机驱动】 STM32-FOC(1)IHM03 电机控制套件的介绍

STM32-FOC(1)IHM03 电机控制套件的介绍 STM32-FOC(2)IHM03 电机控制套件的使用 【动手学电机驱动】 STM32-FOC(1)IHM03 电机控制套件的介绍 1. IHM03:基于 STM32 的电机控制套件1.1 X-NUCLEO-IH…

技术星河中的璀璨灯塔 —— 青云交的非凡成长之路

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

SpringBoot--入门、创建一个SpringBoot项目、测试

一、IDEA配置maven (1)下载maven maven下载地址:Maven – Download Apache Maven (2)解压 解压下载好的文件: 创建一个文件夹maven-repository用来充当本地仓库: (3)配…

无人机避障——使用三维PCD点云生成的2D栅格地图PGM做路径规划

着重介绍通过对三维 PCD 点云进行处理生成 2D 栅格地图 PGM,而后将该 PGM 地图充分运用到无人系统路径规划之中,使得无人机能够依据此规划合理避开飞行路线上可能出现的障碍物。(解决如何使用PGM的问题) Hybrid A*算法 参考博客…

Node.js:内置模块

Node.js:内置模块 Node.jsfs模块读取文件写入文件__dirname path模块路径拼接文件名解析 http模块创建服务 Node.js 传统的JavaScript是运行在浏览器的,浏览器就是其运行环境。 浏览器提供了JavaScript的API,以及解析JavaScript的解析引擎&a…

「漏洞复现」浪潮海岳 HCM Cloud download 任意文件读取漏洞

0x01 免责声明 请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。工具来自网络,安全性自测,如有侵权请联系删…

接雨水

接雨水 ​ 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 1: 输入:height [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数组 [0,1,0,2,1,0,1,…

String的长度有限,而我对你的思念却无限延伸

公主请阅 1. 为什么学习string类?2. string类的常用接口2.1 string类对象的常见构造2.1.1 string 2.2 operator[]2.3 迭代器2.4 auto自动推导数据类型2.5 范围for2.6 迭代器第二层2.7 size和length获取字符串的长度2.8 max_size 获取这个字符串能设置的最大长度2.9 …

Docker Compose一键部署Spring Boot + Vue项目

目录 前提条件 概述 Compose简介 Compose文件 Compose环境 Compose命令 帮助命令 关键命令 Compose部署项目 初始化环境 查看代码文件 sql数据准备 nginx配置文件准备 创建 compose.yaml 一键启动compose多个容器 浏览器访问虚拟机ip:80(可省略默认的80端口) …

【python实操】python小程序之测试报告

引言 python小程序之测试报告 文章目录 引言一、测试报告1.1 概念1.1.1 使用Pytest和Allure生成测试报告1.1.2 使用unittest和HTMLTestRunner生成测试报告1.1.3 总结 1.2 题目1.3 代码1.3 代码解释 二、思考 一、测试报告 1.1 概念 python生成测试报告,常用的方法包…

「Mac畅玩鸿蒙与硬件10」鸿蒙开发环境配置篇10 - 项目实战:计数器应用

本篇将通过一个简单的计数器应用,带你体验鸿蒙开发环境的实际操作流程。本项目主要练习组件的使用、事件响应和状态管理,帮助开发者熟悉基本的应用构建流程。 关键词 计数器应用组件操作事件响应状态管理HarmonyOS 应用开发一、创建计数器项目 1.1 在 DevEco Studio 中新建项…

arcgis pro 3.3.1安装教程

一、获取方式: http://dt4.8tupian.net/2/29913a61b1500.pg3二、软件目录: 三、安装步骤: (1)安装软件运行环境windowsdesktop-runtime 8.0.4; (2)选中安装文件arcgispro_33zh_cn_190127.exe&…

线性代数(1)——线性方程组的几何意义

线性代数的基本问题是求解个未知数的个线性方程; 例如:(方程1)。 在线性代数的第一讲中,我们从Row Picture、Column Picture、Matrix Picture三个角度来看这个问题。 上面的系统是二维的。通过添加第三个变量&#…

【Linux】-常见指令(2)

接上一篇文章【Linux】-常见指令(1)-CSDN博客,继续介绍linux常用指令。 目录 一、man指令 :查看信息 1、作用 2、手册 二、cp指令:拷贝 1、作用 2、拷贝到同级目录 三、mv指令:剪切 1、作用 2、使用…

[论文阅读]SimCSE: Simple Contrastive Learning of Sentence Embeddings

SimCSE:句子嵌入的简单对比学习 SimCSE: Simple Contrastive Learning of Sentence Embeddings http://arxiv.org/abs/2104.08821 EMNLP 2021 文章介绍了SimCSE,这是一种简单的对比学习框架,采用了自监督来提升模型的句子表示能力 而自监…

(蓝桥杯C/C++)——常用库函数

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 一、 二分查找 1.二分查找的前提 2.binary_ search函数 3.lower_bound和upper_bound 二、排序 1.sort概念 2.sort的用法 3.自定义比较函数 三、全排列 1.next p…

【优先算法】双指针

✨✨欢迎大家来到Celia的博客✨✨ 🎉🎉创作不易,请点赞关注,多多支持哦🎉🎉 所属专栏:优先算法 个人主页:Celias blog~ 目录 ​​​​​​移动零 复写零 快乐数 盛水最多的容器 …