《JVM学习》7、堆

JVM堆详解 执行finalize()后,对象可能重新变为可达状态(例如,在finalize()方法中重新将自身赋值给某个静态变量),这种情况下,GC会重新对其进行可达性分析。原理:通过一系列称为“GC Roots”的根对象作为起始节点集,从这些节点开始,根据引用关系向下搜索,搜索过程所走过的路径称为“引用链”(Reference Chain)。Young GC主要在年轻代(Young Generation)触发,年轻代是存放新生成对象的区域,通常较小,并且分为Eden和两个Survivor区域(S0和S1)。 阅读详情

堆

堆的核心概述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

堆的内存细分 新生代,老年代,元空间(1.8以后)

在这里插入图片描述
在这里插入图片描述

设置堆内存大小

-Xms 堆空间初始值大小 -Xmx堆空间最大值

在这里插入图片描述
在这里插入图片描述

代码方式查看

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
打印信息
在这里插入图片描述

OOM举例

在这里插入图片描述
在这里插入图片描述
old区满了 会OOM

年轻代与老年代

在这里插入图片描述
新老生代 默认比例
在这里插入图片描述
伊甸园区和幸存者区比例
在这里插入图片描述
在这里插入图片描述

对象分配过程

在这里插入图片描述在这里插入图片描述

图解对象分配过程

在这里插入图片描述

在这里插入图片描述

to区作用:下次GC的时候伊甸园区的数据存放位置。

默认经历15次GC之后(也有特殊情况),如果还在使用就要放到old区
在这里插入图片描述

注意:幸存者区不会触发YGC或MinorGC,只有区满了才会把幸存者区一起回收,被动回收。

总结

在这里插入图片描述

特殊情况

在这里插入图片描述

常用调优工具

在这里插入图片描述

Minor GC 、 Major GC 与 Full GC

在这里插入图片描述

Minor GC触发机制

在这里插入图片描述

Major GC/Full GC 触发机制

在这里插入图片描述
在这里插入图片描述

堆空间分代思想

在这里插入图片描述
在这里插入图片描述

内存分配策略

在这里插入图片描述
在这里插入图片描述

对象分配过程 TLAB

Thread Local Allocation Buffer

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

堆空间参数设置小结

在这里插入图片描述

堆是对象存储的唯一选择吗?

在这里插入图片描述

逃逸分析

如何判断是否发现了逃逸分析,就看方法里new的对象是否在方法外被调用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

逃逸分析:代码优化
1.栈上分配

在这里插入图片描述

2.同步省略

在这里插入图片描述
在这里插入图片描述

3.分离对象或标量替换

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本章小结

在这里插入图片描述

JVM常用概念之堆未提交 如果想回收内存,该怎么办? 阅读详情

相关推荐

组态王7.5和SQLsever数据库交互

摘要:本文详细介绍了组态王7.5与SQL Server 2016数据库交互的实现流程,包括建立连接、数据存储与查询操作。主要内容涵盖ODBC数据源配置、数据库表格创建、数据插入及查询功能实现(含日期控件查询)

gsjkwg的博客 1578

Jvm学习(7)堆

堆一、堆的核心概念二、设置堆内存大小与OOM三、年轻代与老年代四、图解对象分配过程五、Minor GC、Major GC、Full GC六、堆空间分代实现七、内存分配策略八、为对象分配内存:TLAB九、小结:堆空间的参数设置十、堆是分配对象的唯一选择吗? 一、堆的核心概念 二、设置堆内存大小与OOM 三、年轻代与老年代 四、图解对象分配过程 五、Minor GC、Major GC、Full GC 六、堆空间分代实现 七、内存分配策略 八、为对象分配内存:TLAB 九、小结:堆空间的参数设置 十、堆是分配对象

weixin_42601001的博客 971

Electron多窗口开发避坑指南:Pinia状态同步的3种解决方案对比

本文深入探讨了在Electron多窗口应用中实现Pinia状态同步的三种核心方案。针对Electron多窗口架构下状态隔离的挑战,文章对比了基础事件通信、共享存储以及智能Pinia插件等方案的优劣与适用场景,并提供了生产级的实现指南与选型建议,帮助开发者构建健壮高效的桌面应用。

spice的博客 479

jvm学习——7.运行时数据区之堆

一个进程对应一个jvm实例,一个运行时数据区,又包含多个线程,这些线程共享了方法区和堆,每个线程包含了程序计数器、本地方法栈和虚拟机栈。 66 核心概述 1.一个jvm实例只存在一个堆内存,堆也是java内存管理的核心区域 2.Java堆区在JVM启动的时候即被创建,其空间大小也就确定了。是JVM管理的最大一块内存空间(堆内存的大小是可以调节的) 3.《Java虚拟机规范》规定,堆可以处于物理上不连续的内存空间中,但在逻辑上它应该被视为连续的。 4.所有的线程共享java堆,在这里还可以划分线程私有的

知北行的博客 236

手把手教你玩转CPU微架构专栏--​​​​第二章:流水线——微架构的“效率引擎”​​​​2.4 超标量与超线程:如何突破“单指令流”的限制?

例如,Intel酷睿i5-13600K拥有6个性能核(P核,支持超线程,共12线程)和8个能效核(E核,无超线程,共8线程),兼顾多线程性能与能效比。通过引入“物理寄存器”替代“逻辑寄存器”(如x86的RAX、RBX),消除数据冒险中的“假依赖”(False Dependency)。引入“混合架构”(Performance Core+Efficient Core),大核(P核)专注高性能任务,小核(E核)处理后台任务;​:6发射超标量,IPC≈3.5(通过3D V-Cache优化缓存,进一步提升效率)。

xiaoheshang_123的博客 954

【数据挖掘】心跳信号分类预测 之 特征工程 —— 学习笔记(三)

三、特征工程 3.1 看书 常言道,“巧妇难为无米之炊”。在 ML 中,数据和特征将作“米”,模型和算法则为“妇”。若无数量充足的数据、良好表示的特征,再强大的模型也难以得到满意的结果 (garbage in,garbage out)。对于 ML 问题,数据和特征往往决定了结果的上限,而模型、算法的选择及优化则是在逐步接近该上限。 特征工程,顾名思义,是对原始数据进行一系列工程处理,将其提炼为特征,作为输入供算法和模型使用。在本质上,特征工程是一个表示和展现数据的过程。在实际中,特征工程旨在去除...

闻韶 3358

JVM虚拟机(一)介绍、JVM组成、堆、栈、方法区/元空间、直接内存

JVM虚拟机(一)介绍、JVM组成、堆、栈、方法区/元空间、直接内存

ACGkaka的博客 2169

图神经网络实战(1)——图神经网络(Graph Neural Networks, GNN)基础

本节全面介绍了图神经网络 (Graph Neural Network, GNN) ,包括其在数据分析和机器学习中的重要性。首先探讨了图作为数据表示的相关概念及其在各个领域的广泛应用;然后深入探讨图学习的重要性,包括不同的应用和技术。最后,重点介绍了 GNN 架构,并对比了它与其他方法之间的原理和性能差异。

盼小辉丶的博客 15万+

JAVA进步一点点----JVM简介

@[TOC]JVM虚拟机学习练习 1 学习目标与方法制定 参考知乎大神的方法:https://www.zhihu.com/question/20097631/answer/817071740 Oracle官网:https://www.oracle.com/cn/java/technologies/java-se-documentation.html 实践练习总结各个知识点 学习环境 VMware wo’r’kstation创建redhat7.6操作系统的虚拟机,并且按照jdk,具体安装步骤的博客众多,此处不

qq_45759288的博客 190

Transformer实战(38)——视觉Transformer (Vision Transformer, ViT)

Transformer 在自然语言处理 (NLP) 领域取得了显著成就,在许多不同的任务中都表现出色。在本节中,我们将探索视觉 Transformer (Vision Transformer, ViT) 模型。正如 NLP 领域创建了多种模型一样,视觉领域也开发了多种模型,每种模型都为计算机视觉提供了新的视角。通过本节,将学习如何使用 ViT 等模型进行计算机视觉任务,了解基于 Transformer 的预训练计算机视觉模型的工作原理,以及如何针对特定任务进行微调。

盼小辉丶的博客 2844

【人工智能的数学基础】最优传输(Optimal Transport)问题与Wasserstein距离

代表两堆石子,则问题等价于如何移动一堆石子,通过最小的累积移动距离把它堆成另外一堆石子。的不同位置分配的值。为离散型概率分布,则该优化问题可以表示为矩阵形式。表示寻找总运输成本最小的方案。放大后的上确界不会小于原来的上确界,因此不妨取。具有相同的概率分布。是概率分布,因此积分可以写作采样形式。描述了一种可行的运输方案,表示应该从位置。则最优传输问题的目标函数可以用列向量。对于一个线性规划问题,总可以写出其。的所有可能联合分布的集合,下确界。其中矩阵的每一行代表概率分布。表示寻找使得目标函数最大的。

AI天才研究院 6328

Java虚拟机--------JVM常见参数

JVM系列常见参数及学习思路: JVM 调优常见参数12345678910111213141516Java1.7的jvm参数查看一下官方网站。http://docs.oracle.com/javase/7/docs/technotes/tools/windows/java.htmlJava1.8http://docs.oracle.com...

测试 268

这个AI工具可以把产品说明书转成演示视频,老板狂喜

回顾本文,我们从“传统视频制作的痛点”出发,拆解了AI将产品说明书转为视频的核心技术(NLP文本理解→CV画面生成→视频合成),并提供了3类工具实操方案(SaaS/开源/API)。推广成本降80%,制作效率提90%,产品迭代与推广终于能“同频”;摆脱对专业团队的依赖,自己就能快速产出高质量视频;对技术爱好者来说,这是一个“AI多模态融合”的绝佳实践案例(NLP+CV+语音合成的综合应用)。今天就找一份产品说明书,用HeyGen或Pictory试做一个视频。

AIGC应用创新大全的博客 322

JVM及垃圾回收算法,直面春招

最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!

m0_61067876的博客 1088

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

《JVM第7课》堆区

堆是JVM中最重要的一块区域,JVM规范中规定所有的对象和数组都应该存放在堆中,在执行字节码指令时,会把创建的对象存入堆中,对象的引用地址存入虚拟机栈的栈帧中。不过当方法执行完之后,刚刚所创建的对象并不会立马被回收,也就是说对象并不会随着栈帧的消失而消失,而是要等JVM后台执行GC后,对象才会被回收。可以通过 -XX:NewRatio 参数来配置老年代和新生代的比例,默认为 -XX:NewRatio=2,表示新生代占1,老年代占2。默认情况下,-Xms等于物理内存大小/64,-Xmx等于物理内存大小/4。

避免专业名词,喜欢讲人话。 1092

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

JVM之 方法区 和 堆 的总结(学习笔记)

1、方法区(Method Area),又称永久代(Permanent Generation),又称非堆区(Non-Heap space) 方法区,又称永久代(Permanent Generation),常称为PermGen,位于非堆空间,又称非堆区(Non-Heap space)。 方法区是被所有线程共享。 所有字段和方法字节码,以及一些特殊方法如构造函数,接口代码也在此定义。 简单说,所有定...

猎人在吃肉 6991

JVM中堆的简介

一:基本概念 Java 中的堆是 JVM 管理的最大的一块内存空间,主要用于存放Java类的实例对象,其被划分为两个不同的区域:新生代 ( Young )和老年代 ( Old ),其中新生代 ( Young )又被划分为:Eden、From Survivor和To Survivor三个区域,如下图所示: jdk7及以前版本 jdk8及以后版本 二:堆的各个区域 堆大小 = 新生代( Young...

wang_da_bing的博客 854

JVM运行时数据区-堆

学习Java运行时数据区中的堆内存,包括堆空间分代思想,内存分配策略,以及逃逸分析等。

m0_62946761的博客 3186

JVM学习笔记之堆

目录 背景 核心概述 设置堆大小、OOM问题 年轻代与老年代 对象分配过程 Minor GC、Major GC、Full GC 堆空间分代思想 内存分配策略 TLAB 堆参数设置小结 堆不是分配对象的唯一选择 结语 背景 整理一下这几天学习宋红康JVM上篇剩下部分的笔记,从堆到垃圾回收器 从堆开始,测试内容都是基于jdk8的 核心概述 进程内唯一,线程共享,但可以划分线程私有缓冲区(Thread Local Allocation Buffer, TLAB)。 堆在JVM启

四国棋客 774

【jvm】虚拟机之堆

1. 一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域2. Java 堆区在JVM 启动的时候即被创建,其空间大小也就确定了。是JVM管理的最大一块内存空间3. 堆内存的大小是可以调节的4. 《Java虚拟机规范》规定,堆可以处于物理上不连续的内存空间中,但在逻辑上它应该被视为连续的5. 所有的线程共享Java堆,在这里还可以划分线程私有的缓冲区 (ThreadLocal Allocation Buffer, TLAB)

王佑辉的博客 1388

JVM详解-栈&堆

栈&堆栈栈结构JVM中的栈Java中的栈1、栈里面存放什么2、栈运行原理堆堆(Heap)新生区老年区永久区出现OOMVM options参数 栈 栈结构 栈是一种数据结构。程序=数据结构+算法 栈:先进后出,后进先出 队列:先进先出(FIFO) Q:为什么main()方法先执行后结束 A:先进栈,最后出 JVM中的栈 Oracle关于栈和栈帧提供了如下描述: 每个JVM线程拥有一个私有的 Java虚拟机栈,创建线程的同时栈也被创建。一个JVM栈由许多帧组成,称之为"栈帧"。JVM中的栈和C等常见语言

qq_41644234的博客 3233

JVM结构及堆的划分

一、JVM结构 1、类加载子系统与方法区   类加载子系统负责从文件系统或者网络中加载Class信息,加载的类信息存放于一块称为方法区的内存空间。除了类的信息外,方法区中可能还会存放运行时常量池信息,包括字符串字面量和数字常量(这部分常量信息是Class文件中常量池部分的内存映射)。 2、Java堆   java堆在虚拟机启动的时候建立,它是java程序最主要的内存工作区域。几乎所有的java对象实例都存放在java堆中。堆空间是所有线程共享的,这是一块与java应用密切相关的内存空间。 ...

qq_35222843的博客 1133

jvm堆相关知识

堆是共享的,一个进程只有一个jvm实例,一个jvm实例只有一个运行时数据区,一个运行时数据区只有一个堆和方法区。java堆区用于存储java对象实例,那么堆的大小在jvm启动时就已经设定好了。MinorGC/YGC:垃圾回收的对象是eden和surivior区。Eden空间和两个survivor空间默认比例是:8:1:1。一旦超过-Xmx表示的最大内存,将会抛出OOM异常。2.java堆区进一步细分,可以划分为年轻代和老年代。进程包含多个线程,线程之间共享同一堆空间。设置新生代最大内存大小,但一般步改变。

qqqwx_111116的博客 756

JVM 第二部分-2(堆,方法区)

JVM 第二部分-2(堆,方法区)

weixin_45552441的博客 1259

《剑指JVM》——第7章——堆

🔥本篇概览:详细讲解了《剑指JVM》——第7章——堆。🌈⭕🔥

做一个善良的人,做好自己的事,如果愿意,再发一份光。 932

jvm学习第五天—堆

标题:jvm学习第五天—堆 学习内容: 1、堆的概述 2、堆的细分结构 3、新生代,老年代的概述 4、Minor GC / Young GC、Major GC / old GC、Full GC 5、堆空间分代思想、内存分配策略、TLAB 6、逃逸分析 内容详情: 1、堆的概述 一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。 Java堆区在JVM启动的时候即被创建,其空间大小也就确定了。 是JVM管理的最大一块内存空间。 堆内存的大小是可以调节的。 《Java虚拟机规范》规定,堆可以

jxbjr的博客 275
上一篇: 《JVM学习》6、本地方法栈
下一篇: 《JVM学习》8、方法区
pywanggui
博客等级 码龄12年 6粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pywanggui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值