当前位置: 首页 > news >正文

详解Java中的堆内存

详解Java中的堆内存

堆是JVM运行数据区中的一块内存空间,它是线程共享的一块区域(注意了!!!),主要用来保存数组和对象实例等(其实对象有时候是不在堆中进行分配的,想要了解的可以看我之前写的博文:小白秒懂什么是栈上分配)。在堆中内存空间不足以进行分配时,就会出现OutOfMemoryError(OOM)异常。

在JDK7和JDK8中,堆中的内存结构是不同的:
在这里插入图片描述

那在JDK8中的永久代(方法区)为什么没有了那?
它被移动到了本地内存中,被称为元空间

那又有一个疑问了:为什么要把堆内存中的永久代移动到本地内存中作为元空间?
其实就是为了避免OOM异常。

年轻代又被分为三部分:Eden区和两个Survivor区。两个Survivor区大小是完全相同的,被称为from区to区。Eden区和from区、to区的比例为8 : 1 : 1。

  1. 当有一个对象新创建后,其首先会被分配到Eden区(部分对象不会首先分配到Eden区,后面会说),当Eden区内存不足时,会标记Eden区中存活的对象,进行垃圾回收,并把存活的对象移动到from区。
  2. 当Eden区内存再次不足时,再次GC,把Eden区和from区中存活的对象通过复制算法移动到to区。
  3. 再次不足时,GC,通过复制算法将Eden区和to区中存活的对象移动到from区。
  4. 就这样一直移动,当一个对象移动了15次,就被将其分配到老年代。

这就是分代回收
但有些时候对象的除此创建并不会首先被分配到Eden区,这种对象就是大对象,也就是占用大量连续内存空间的对象,其会被直接分配到老年代。

这里可能大家还会有一个疑问:为什么对象移动了15次,就会将其分配给老年代?移动的次数又是存储在哪里的?

这里就又要说到对象的内存结构了。HotSpot虚拟机中,对象在内存中的存储被分为三个部分。如图:
在这里插入图片描述

对象头又被分为
在这里插入图片描述

在MarkWord中,就存储了对象的信息(下面只列了部分):

  1. age:对象分代年龄,占4位。
  2. hashcode。
  3. biased_lock:偏向锁标识,1位。(好奇什么是偏向锁的朋友,可以搜一下锁升级,也就是synchronized这个锁的知识,我这里不深入聊锁)
  4. 等等…

age就是我们对象的GC年龄,每次移动,都会加1。age占4位,也就是2^4 - 1 = 15。所以这就是分代年龄为什么是15次,因为它能存储的最大数值是15。

JVM也提供了参数去设置分代年龄的大小,但都不能超过15。

相关文章:

详解Java中的堆内存

详解Java中的堆内存 堆是JVM运行数据区中的一块内存空间,它是线程共享的一块区域(注意了!!!),主要用来保存数组和对象实例等(其实对象有时候是不在堆中进行分配的,想要了…...

C++类和对象下详细指南

C类和对象下详细指南 1. 初始化列表与构造函数 1.1 初始化列表概述 初始化列表在C中用于初始化对象的成员变量,特别是当你需要在对象构造时就明确成员变量的值时。通过初始化列表,成员变量的初始化可以在进入构造函数体之前完成。这不仅可以提升性能&…...

【瑞昱RTL8763E】音频

1 音乐播放控制 1.1 播放列表更新 文件系统在sd卡中保存header.bin及name.bin两份文件用于歌曲名称的存储。为方便应用层进行歌曲显示及列表管理,可将这两个bin文件信息读取并保存到nor flash中。需要播放指定名称的歌曲时,将对于歌曲名称传递给文件系…...

videojs 播放监控

<head><!-- 1. 引入videojs的CSS。 --><link href"https://vjs.zencdn.net/7.20.3/video-js.css" rel"stylesheet" /><!-- If youd like to support IE8 (for Video.js versions prior to v7) --><!-- <script src"htt…...

电源管理芯片PMIC

一、简介 电源管理芯片&#xff08;Power Management Integrated Circuits&#xff0c;简称PMIC&#xff09;是一种集成电路&#xff0c;它的主要功能是在电子设备系统中对电能进行管理和控制&#xff0c;包括但不限于以下几点&#xff1a; 电压转换&#xff1a;将电源电压转换…...

C++ 线性表、内存操作、 迭代器,数据与算法分离。

线性表&#xff1a; 线性表是最基本、最简单、也是最常用的一种数据结构。线性表&#xff08;linear list&#xff09;是数据结构的 一种&#xff0c;一个线性表是n个具有相同特性的数据元素的有限序列。 线性表中数据元素之间的关系是一对一的关系&#xff0c;即除了第一个和…...

PHP如何解析配置文件

在PHP中解析配置文件有多种方法&#xff0c;具体取决于配置文件的格式。常见的配置文件格式包括INI文件、YAML文件、JSON文件以及PHP数组文件&#xff08;即PHP文件本身包含配置数组&#xff09;。下面是一些常用的方法来解析这些配置文件。 1. 解析INI文件 INI文件是最常见的…...

【Java】六大设计原则和23种设计模式

目录 一、JAVA六大设计原则 二、JAVA23种设计模式 1. 创建型模式 2. 结构型模式 3. 行为型模式 三、设计原则与设计模式 1. 设计原则 2. 设计模式 四、单例模式 1. 饿汉式 2. 懒汉式 四、代理模式 1. 什么是代理模式 2. 为什么要用代理模式 3. 有哪几种代理模式 …...

Java IO流全面教程

此笔记来自于B站黑马程序员 File 创建对象 public class FileTest1 {public static void main(String[] args) {// 1.创建一个 File 对象&#xff0c;指代某个具体的文件// 路径分隔符// File f1 new File("D:/resource/ab.txt");// File f1 new FIle("D:\\…...

PCIe6.0 AIC金手指和板端CEM连接器信号完整性设计规范

先附上我之前写的关于PCIe5.0金手指的设计解读&#xff1a; PCIe5.0的Add-in-Card(AIC)金手指layout建议&#xff08;一&#xff09;_pcie cem-CSDN博客 PCIe5.0的Add-in-Card(AIC)金手指layout建议&#xff08;二&#xff09;_gnd bar-CSDN博客 首先&#xff0c;相较于PCI…...

二、创建drf纯净项目

1)创建项目 django-admin startproject api2&#xff09;创建app django-admin startproject api_app3)修改settings.py注释掉一些没用的配置 INSTALLED_APPS [# django.contrib.admin,# django.contrib.auth,# django.contrib.contenttypes,# django.contrib.sessions,# d…...

算法1:双指针思想的运用(2)--C++

1.盛水最多的容器 题目链接&#xff1a;11. 盛最多水的容器 - 力扣&#xff08;LeetCode&#xff09; 题目解析&#xff1a; 在解析题目时&#xff0c;我们可以把最直接的方法先列举出来&#xff0c;然后再根据相应的算法原理&#xff0c;来进行优化 思路一&#xff1a;暴力…...

L1415 【哈工大_操作系统】CPU调度策略一个实际的schedule函数

L2.7 CPU调度策略 1、调度的策略 周转时间&#xff1a;任务进入到任务结束&#xff08;后台任务更关注&#xff09;响应时间&#xff1a;操作发生到响应时&#xff08;前台任务更关注&#xff09;吞吐量&#xff1a;CPU完成的任务量 响应时间小 -> 切换次数多 -> 系统…...

免费版U盘数据恢复软件大揭秘,拯救你的重要数据

我们的生活和工作越来越离不开各种存储设备&#xff0c;其中优盘因其小巧便携、方便使用的特点&#xff0c;成为了我们存储和传输数据的重要工具之一。为了防止你像我一样会遇到数据丢失抓狂的情况&#xff0c;我分享几款u盘数据恢复软件免费版工具来即时补救。 1.福昕U盘数据…...

Pikachu-Unsafe FileUpload-客户端check

上传图片&#xff0c;点击查看页面的源码&#xff0c; 可以看到页面的文件名校验是放在前端的&#xff1b;而且也没有发起网络请求&#xff1b; 所以&#xff0c;可以通过直接修改前端代码&#xff0c;删除 checkFileExt(this.value) 这部分&#xff1b; 又或者先把文件名改成…...

【数据结构】什么是红黑树(Red Black Tree)?

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 目录 &#x1f4cc;红黑树的概念 &#x1f4cc;红黑树的操作 &#x1f38f;红黑树的插入操作 &#x1f38f;红黑树的删除操作 结语 &#x1f4cc;红黑树的概念 我们之前学过了…...

Xcode16适配

1.问题&#xff0c;第三方库报错信息如下&#xff1a; Declaration of sa_family_t must be imported from module Darwin.POSIX.sys.types._sa_family_t before it is required2.解答&#xff0c;在报错文件中导入以下头文件 #import <sys/_types/_sa_family_t.h>如有…...

Vue - 路由用法

前端路由就是URL中的hash与组件之间的对应关系。Vue Router是Vue的官方路由。 组成&#xff1a; VueRouter&#xff1a;路由器类&#xff0c;根据路由请求在路由视图中动态渲染选中的组件。<router-link>&#xff1a;请求链接组件&#xff0c;浏览器会解析成<a>。…...

SpringBoot框架下校园资料库的构建与优化

1系统概述 1.1 研究背景 如今互联网高速发展&#xff0c;网络遍布全球&#xff0c;通过互联网发布的消息能快而方便的传播到世界每个角落&#xff0c;并且互联网上能传播的信息也很广&#xff0c;比如文字、图片、声音、视频等。从而&#xff0c;这种种好处使得互联网成了信息传…...

vscode 连接云服务器(ubantu 20.04)

更改服务器系统 如果云服务器上的系统不是ubantu20.04的&#xff0c;可以进行更改&#xff1a; 登录云服务官网&#xff08;这里以阿里云为例&#xff09;点击控制台 点击服务器实例 点击更多操作、重置系统 点击重置为其他镜像、系统镜像&#xff1a;选择你要使用的系统镜像…...

费雪的竞争优势分析框架

费雪的竞争优势分析框架 关键词:费雪竞争优势分析框架、企业竞争优势、财务分析、行业分析、企业战略 摘要:本文深入探讨了费雪的竞争优势分析框架。该框架是评估企业竞争力的重要工具,通过多维度的分析帮助投资者和企业管理者判断企业在市场中的地位和发展潜力。文章首先介…...

Quartus II 13.1 NCO IP核调用失败?可能是这两个坑你没注意(附详细license配置指南)

Quartus II 13.1 NCO IP核调用深度排障指南&#xff1a;从环境配置到授权管理 1. 环境准备&#xff1a;Java运行时环境的隐形陷阱 在FPGA开发中&#xff0c;数字控制振荡器&#xff08;NCO&#xff09;IP核是实现高精度频率合成的关键组件。然而&#xff0c;当你在Quartus II 1…...

如何3步搭建AI驱动的多智能体股票分析平台?TradingAgents-CN全指南

如何3步搭建AI驱动的多智能体股票分析平台&#xff1f;TradingAgents-CN全指南 【免费下载链接】TradingAgents-CN 基于多智能体LLM的中文金融交易框架 - TradingAgents中文增强版 项目地址: https://gitcode.com/GitHub_Trending/tr/TradingAgents-CN 面对复杂多变的金…...

AAC编码详解

嵌入式音视频开发——AAC编码 1. AAC 编码概述 在嵌入式音视频开发中&#xff0c;AAC&#xff08;Advanced Audio Coding&#xff0c;高级音频编码&#xff09;是一种非常常见的有损音频压缩技术&#xff0c;广泛应用于手机、机顶盒、车机、智能摄像头、会议终端、对讲设备以及…...

电源管理入门-4子系统reset

之前的文章电源管理入门-1关机重启详解介绍了整机SoC的重启也可以说是reset&#xff0c;那么子系统的reset&#xff0c;例如某个驱动&#xff08;网卡、USB等&#xff09;或者某个子系统&#xff08;NPU、ISP等运行在独立的M核或者R核上的AI系统&#xff09;&#xff0c;这些零…...

告别云端:在百元ESP32-S3上实现离线婴儿哭声识别,隐私与实时性我全都要

边缘智能革命&#xff1a;用ESP32-S3打造零隐私风险的婴儿监护终端 当科技与育儿需求碰撞&#xff0c;我们面临一个核心矛盾&#xff1a;如何在不牺牲隐私的前提下实现智能化监护&#xff1f;传统方案依赖云端处理&#xff0c;却让敏感数据暴露在传输与存储环节。本文将揭示一种…...

vue基于springboot的目的地旅游预订网站

目录同行可拿货,招校园代理 ,本人源头供货商功能模块划分技术实现要点扩展功能建议性能优化方向项目技术支持源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作同行可拿货,招校园代理 ,本人源头供货商 功能模块划分 用户模块 用户注册与登录…...

AI辅助开发:让快马平台Kimi模型帮你构建《构石》官网智能搜索功能

最近在帮《构石》期刊官网开发智能搜索功能时&#xff0c;发现用传统方式写代码效率太低。尝试了InsCode(快马)平台的AI辅助开发后&#xff0c;整个过程变得特别顺畅。这里分享下具体实现思路和平台使用体验。 需求分析 期刊官网需要支持多条件组合搜索&#xff0c;包括年份范围…...

OSI七层模型的意义:网络世界的工程思维密码

理解七层网络模型&#xff08;OSI模型&#xff09;的意义&#xff0c;不在于死记硬背哪一层叫什么名字&#xff0c;而在于它能帮你建立一套拆解复杂系统的思维框架。具体来说&#xff0c;学习它主要有以下几层价值&#xff1a;1. 建立“分而治之”的工程思维网络通信是一个极其…...

OpenClaw 的模型训练中,是否使用了半监督学习?伪标签策略?

关于OpenClaw在语音对话中是否支持多通道音频处理&#xff0c;其实可以从一个更贴近实际工程的角度来看。多通道音频处理在语音识别领域并不是一个简单的“支持”或“不支持”就能概括的问题&#xff0c;它背后涉及的是整个音频处理管道的设计思路和实际应用场景的匹配程度。 从…...