《JVM第7课》堆区

文章目录

    • 1.概念
    • 2.指定堆大小
    • 3.新生代和老年代
      • 3.1 新生代
      • 3.2 老年代
      • 3.3 动画演示
    • 4.分代收集理念

1.概念

堆是JVM中最重要的一块区域,JVM规范中规定所有的对象和数组都应该存放在堆中,在执行字节码指令时,会把创建的对象存入堆中,对象的引用地址存入虚拟机栈的栈帧中。不过当方法执行完之后,刚刚所创建的对象并不会立马被回收,也就是说对象并不会随着栈帧的消失而消失,而是要等JVM后台执行GC后,对象才会被回收。

2.指定堆大小

-Xms:指定堆的初始内存大小,ms(memory start)。等价于 -XX:InitialHeapSize;

-Xmx:指定堆的最大内存大小,mx(memory max)。等价于 -XX:MaxHeapSize;

一般会把 -Xms 和 -Xmx 设置为一样,这样JVM就不需要在GC后去修改堆的内存大小了,提高了效率。默认情况下,-Xms等于物理内存大小/64,-Xmx等于物理内存大小/4。

3.新生代和老年代

在这里插入图片描述

垃圾回收算法有很多,但基本上都会把内存分为新生代和老年代两块区域。新生代存放新创建的对象,老年代存放执行了许多次GC(默认为15次)后还存活的对象。

可以通过 -XX:NewRatio 参数来配置老年代和新生代的比例,默认为 -XX:NewRatio=2,表示新生代占1,老年代占2。一般是不需要调整的,只有明确知道存活时间比较长的对象偏多或偏少,才需要调整 -XX:NewRatio 的比值。

3.1 新生代

新生代又可以分为 Eden(伊甸园区)和 S0、S1 区。

Eden: 伊甸园区,新对象都会先放到Eden区。

S0、S1区: Survivor0、Survivor1区,也可以叫做from、to区,用来存放MinorGC(YGC)后存在的对象。

默认情况下 Eden、S0、S1 的比例为 8:1:1,也就是说Eden区占新生代大小的 8/10。可以通过 -XX:SurvivorRatio 来调整。

3.2 老年代

老年代存放执行了许多次GC后还存活的对象。老年代默认占内存区域的2/3。

3.3 动画演示

动画演示对象在内存各区域中的流转过程

在这里插入图片描述

  1. 对象会先被放到Eden区。
  2. 执行 Young GC 后会被放到S0或S1区,S0和S1不能同时非空,对象会在S0和S1之间反复跳跃。
  3. 在执行一定次数(默认为15次)的 Young GC 后假设对象还没有被回收掉,就会进入老年代区域。
  4. 如果新对象大小超过了 Eden 区剩余空间大小,则会直接进入S0或S1,如果S0或S1放不下则会直接进入老年代。
  5. 老年代继续执行 Old GC 对其中对象进行回收。
  6. 这里的 Young GC 和 Old GC 也可叫做 Minor GC 和 Major GC,它们并不是垃圾回收器的名字,只是代表年轻代和老年代的垃圾回过程

4.分代收集理念

上面的新生代老年代就是分代收集理念,有些时候会被叫做分代收集算法,但其实它是一种理念。默认几乎所有的垃圾回收算法都是采用分代收集理念。

为什么垃圾回收算法要把内存区域分为新生代和老年代,新生代里又包含Eden区、Survivor0、Survivor1区呢?

这是因为不同的对象存活时长是不一样的,所以要针对存活时长不同的对象采取不同的垃圾回收算法。

  • 新生代中的对象存活时间比较短,那么就可以采取“复制算法”(后面的章节会介绍)。
  • 老年代中的对象存活时间比较长,所以不太适合用复制算法,可以用“标记-清除算法”或“标记-整理算法”(后面的章节会介绍)。

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

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

相关文章

【笔记】自动驾驶预测与决策规划_Part6_不确定性感知的决策过程

文章目录 0. 前言1. 部分观测的马尔可夫决策过程1.1 POMDP的思想以及与MDP的联系1.1.1 MDP的过程回顾1.1.2 POMDP定义1.1.3 与MDP的联系及区别POMDP 视角MDP 视角决策次数对最优解的影响 1.2 POMDP的3种常规解法1.2.1 连续状态的“Belief MDP”方法1. 信念状态的定义2. Belief …

Spring Boot框架下的知识管理与多维分类

4 系统设计 系统分析接下来的操作步骤就是系统的设计,这部分内容也是不能马虎对待的。因为生活都是在不断产生变化,人们需求也是在不断改变,开发技术也是在不断升级,所以程序也需要考虑在今后可以方便进行功能扩展,完成…

LeetCode17. 电话号码的字母组合(2024秋季每日一题 59)

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例 1: 输入:digits “23” 输出:[“…

Nature Methods | 基于流形约束的RNA速度推断精准解析细胞周期动态调节规律

生信碱移 VeloCycle算法 VeloCycle:基于流形约束的RNA速度推断在细胞周期动态中的精准解析 今天给各位老铁们分享一篇于2024年10月31号发表在 Nature Methods [IF: 36.1] 的文章:"Statistical inference with a manifold-constrained RNA velocity…

Spring挖掘:(AOP篇)

学习AOP时,我们首先来了解一下何为AOP 一. 概念 AOP(面向切面编程,Aspect Oriented Programming)是一种编程技术,旨在通过预编译方式或运行期动态代理实现程序功能的统一管理和增强。AOP的主要目标是在不改变原有业务逻辑代码的…

【机器学习】k最近邻分类

📝本文介绍 本文为作者阅读鸢尾花书籍以及一些其他资料的k最近邻分类后,所作笔记 👋作者简介:一个正在积极探索的本科生 📱联系方式:943641266(QQ) 🚪Github地址:https://github.com…

《深度学习》bert自然语言处理框架

目录 一,关于bert框架 1、什么是bert 2、模型结构 自注意力机制: 3、预训练任务 4、双向性 5、微调(Fine-tuning) 6、表现与影响 二、Transformer 1、传统RNN网络计算时存在的问题 1)串联 2)并行…

开源 - Ideal库 - 常用时间转换扩展方法(一)

从事软件开发这么多年,平时也积累了一些方便自己快速开发的帮助类,一直在想着以什么方式分享出来,因此有了这个系列文章,后面我将以《开源-Ideal库》系列文章分享一些我认为比较成熟、比较方便、比较好的代码,如果感觉…

网络安全漏洞管理十大度量指标

前言 当前,网络安全漏洞所带来的风险及产生的后果,影响到网络空间乃至现实世界的方方面面,通信、金融、能源、电力、铁路、医院、水务、航空、制造业等行业各类勒索、数据泄露、供应链、钓鱼等网络安全攻击事件层出不穷。因此,加…

R语言*号标识显著性差异判断组间差异是否具有统计意义

前言 该R代码用于对Iris数据集进行多组比较分析,探讨不同鸢尾花品种在不同测量变量(花萼和花瓣长度与宽度)上的显著性差异。通过将数据转换为长格式,并利用ANOVA和Tukey检验,代码生成了不同品种间的显著性标记&#x…

Web前端PC端开发者工具详细介绍(约10000字保姆级讲解)

1.Elements部分 首先按下F12键即可进入开发者工具页面,以CSDN博客页面为例,如下可以看到右侧是该页面所对应的前端代码。 在Elements部分的Styles模块下可以看页面的各个类别的样式等。 (1)点击.cls可以开启动态修改元素的class&a…

SQL Server 日志记录

SQL Server是一个关系数据库管理系统(RDBMS),旨在有效地存储、组织、检索和操作大量结构化数据。SQL Server日志是监控数据库活动、排查问题和确保数据一致性的基础,这些日志记录了SQL Server实例中发生的事件的时间顺序。它们充当…

Qt QCustomplot 在采集信号领域的应用

文章目录 一、常用的几种开源库:1、QCustomPlot:2、QChart:3、Qwt:QCustomplot 在采集信号领域的应用1、应用实例时域分析频谱分析2.数据筛选和处理其他参考自然界中的物理过程、传感器和传感器网络、电路和电子设备、通信系统等都是模拟信号的来源。通过可视化模拟信号,可以…

【数据结构】堆和二叉树(2)

文章目录 前言一、建堆和堆排序1.堆排序 二、二叉树链式结构的实现1.二叉树的遍历 三、链式二叉树的功能函数1.二叉树结点个数2.二叉树叶子结点个数3.二叉树的高度4.二叉树第k层结点个数5. 二叉树查找值为x的结点6.二叉树销毁 总结 前言 接着上一篇博客,我们继续分…

PDF多功能工具箱 PDF Shaper v14.6

如今对PDF处理的软件很多都是只是单一的功能。PDF Shaper给你完全不同的体验,因为PDF Shaper是一款免费的PDF工具集合的软件。有了PDF Shaper,你以后再也不用下载其他处理PDF的软件了。PDF Shaper的功能有:合并,分割,加…

猫用空气净化器哪个牌子好?求除毛好、噪音小的宠物空气净化器!

换毛季家里孩子不省心,疯狂掉落的猫毛和空气中乱飞的浮毛可把我折磨死了。每天下班都要抽出时间来清理,不然这个家就不能要了。猫毛靠我自己可以打扫,浮毛还得借助宠物空气净化器这种专业工具。所以我最近着手做功课,打算入手一台…

Halcon 矫正图像 图像矫正

目录 原图 矫正后的图像 ​编辑 示例代码 原图 矫正后的图像 示例代码 找ROI部分代码暂无法分享 HomMat2DInvert : []Row_T : []Col_T : []region_features (ROI, rectangularity, Value)if (Value > RectY)HomMat2DInvert : []smallest_rectangle1 (ROI, Row_T, Col…

Spring Boot 3.x 中使用 SpringDoc 2 / Swagger3(详解)

大家好,我是码哥,《Redis 高手心法》作者。 SpringBoot 已经成为 Java 开发的首选框架,今天码哥跟大家聊一聊 Spring Boot3 如何与 Swagger3 集成打造一个牛逼轰轰的接口文档。 为什么要用 Swagger 唐二婷:我最讨厌两件事&#xf…

Java中四种引用类型【快速理解】图文

一、强引用 我们正常手动new出来的对象都是强应用,不对他进行别的操作的时候它是不会进行垃圾回收的。除非将它的引用断开,此时调用垃圾回收器才会将它回收。 二、软引用 三、虚引用 虚引用的意思就是,引用关系是虚的,如果创造出…

C语言-详细讲解-洛谷P1075 [NOIP2012 普及组] 质因数分解

1.题目要求 2.题目解析 解题点在于如何分解质因数&#xff0c;这里介绍一下短除法。&#xff08;虽然解决这个问题可以不用短除法&#xff09; 3.代码实现 贴一下自己的代码 #include <stdio.h> #include <math.h>int main() {int n, i;scanf("%d",…