【jvm】堆的内部结构

embedded/2024/10/31 13:22:56/

目录

          • 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.ppmy.cn/embedded/133870.html

相关文章

第三十四篇:URL和URI的区别,HTTP系列一

前面我们讲到通过TCP协议通信双方建立可靠连接,那么此时双方进行通信,需要用人能理解的形式进行信息组织,也就是为各种特定需求服务,满足日常生活中的各种场景。 比如:网页浏览、电子邮件、远程登录、文件传输、网络管…

Linux_03 Linux 常用命令——find、ls

Find命令——查找当前目录及子目录 一、格式 find <path> [options] [expression]1、path&#xff1a;需要查找的目录的路径 find ~$HOME目录find .当前目录find /根目录&#xff0c;可以继续向子目录限制 如果限制在当前目录而不进行子目录的查找&#xff0c;则加入…

C++学习路线(数据库部分)七0

存储过程和函数 存储过程和函数是在数据库中定义的一些SQL语句的集合&#xff0c;然后直接调用这些存储过程和函数来执行已经定义好的SQL语句。存储过程和函数可以避免开发人员重复编写相同的SQL语句。而且&#xff0c;存储过程和函数是在MySQL服务器中存储和执行的&#xff0…

windows下安装python库wordCloud报错

换电脑安装wordcloud半天安装失败&#xff0c;记录一下遇到的坑&#xff0c;也给大家节省点时间。 方法1&#xff1a; 错误呢就是下面这个&#xff0c;说没c编译器&#xff0c;要不就去他给的地址上安装一下&#xff0c;我安装了一下好像没什么用&#xff0c;也没太敢勾选&am…

APScheduler:强大的Python定时任务调度器

安装 使用pip安装APScheduler&#xff1a; pip install apscheduler基本概念 APScheduler有四种组件&#xff1a; Triggers&#xff1a;包含调度逻辑&#xff0c;每个作业有其专属触发器&#xff0c;决定下次运行时间。触发器无状态&#xff0c;仅依据初始配置工作。Job St…

基于TPU平台的OCR模型性能优化赛题快来揭榜 | CCF BDCI进行时

一年一度的行业盛事2024 CCF大数据与计算智能大赛&#xff08;简称2024 CCF BDCI&#xff09;又在激烈进行中啦&#xff0c;多个赛题等你挑战 还没有报名的伙伴们抓紧时间咯&#xff0c;叫上你伙伴练起来吧&#xff01; 2024 CCF大数据与计算智能大赛 CCF大数据与计算智能大…

hdlbits系列verilog解答(Dff8p-同步复位下降沿8位触发器)-83

文章目录 一、问题描述二、verilog源码三、仿真结果一、问题描述 本节学习如何创建具有高电平有效同步复位的 8位 D 触发器。触发器必须重置为 0x34 而不是 0。所有 DFF 都应由 的 clk 下降沿触发。 模块声明 module top_module ( input clk, input reset, input [7:0] d, ou…

【STM32】单片机ADC原理详解及应用编程

本篇文章主要详细讲述单片机的ADC原理和编程应用&#xff0c;希望我的分享对你有所帮助&#xff01; 目录 一、STM32ADC概述 1、ADC&#xff08;Analog-to-Digital Converter&#xff0c;模数转换器&#xff09; 2、STM32工作原理 二、STM32ADC编程实战 &#xff08;一&am…