JVM学习随笔03——Java堆中new一个对象的步骤
目录
一、进行类加载
二、堆中分配内存
1、怎么输出GC日志:
2、内存分配的两种方式:
3、内存分配过程中并发控制的两种方式:
三、内存空间初始化
四、对象头初始化(对象头包含哪些信息?)
五、执行构造函数。
补充1(对象的内存布局):一个Java对象,在堆中都需要存储它的什么信息?
补充2(对象的2种访问定位方式):我们知道,虚拟机栈中存储了对象的引用(就是一个地址吧,我觉得),那怎么通过这个引用来获得这个对象的所有信息?
一、进行类加载
二、堆中分配内存
1、怎么输出GC日志:
--XX:+PringGCDetails
2、内存分配的两种方式:
- 如果JVM带有空间压缩功能,那堆空间就比较规整,这时候可以用指针碰撞(空闲区和已使用区之间的指针向空闲区移动);
- 反之,用空闲列表,典型如使用标记-清除算法的CMS;
3、内存分配过程中并发控制的两种方式:
- 方案一:CAS乐观锁;
- 方案二:给每一个线程单独开一个内存缓冲区,每个线程的缓冲区用完后采用CAS;
三、内存空间初始化
初始化为零值;
四、对象头初始化(对象头包含哪些信息?)
① 对象的哈希码:哈希码和对象存储地址有关,可以通过obj.toString()来看哈希码是啥,toString()函数实现如下:
public String toString() {return getClass().getName() + "@" + Integer.toHexString(hashCode());}② GC分代年龄:
③ 一些锁信息:
五、执行构造函数。
补充1(对象的内存布局):一个Java对象,在堆中都需要存储它的什么信息?
- 对象头:哈希码、gc年龄、锁信息等等;
- 实例数据部分:用户代码定义的内容;
- 对齐填充:补位用;
补充2(对象的2种访问定位方式):我们知道,虚拟机栈中存储了对象的引用(就是一个地址吧,我觉得),那怎么通过这个引用来获得这个对象的所有信息?

- 直接指针:引用存储的就是对象在Java堆中的地址,在《深入理解JVM》这本书中,对象实例存储在堆里,但对象类型信息存储在方法区,所以堆中还需要存储一个方法区的地址;
- 句柄:在堆中开一个句柄池,分别存储对象实例的地址和对象类型信息的地址;
- 对比:对于直接指针,因为少了一层访问,所以相比句柄方法速度快,但当对象位置移动频繁时,栈中的地址就得经常变化。而句柄这种方式,在对象位置移动时,只需要修改句柄池的信息。
- 那为什么修改句柄池就比修改虚拟机栈要优呢?
- 书中的图只画了对象实例对应栈中一个引用的情况,实际上因为虚拟机栈中会有多个引用同时指向堆中的对象实例,所以对象实例位置改变,这些引用都要改变,而句柄就相当于对这些引用进行了一次汇总。
相关文章:
JVM学习随笔03——Java堆中new一个对象的步骤
目录 一、进行类加载 二、堆中分配内存 1、怎么输出GC日志: 2、内存分配的两种方式: 3、内存分配过程中并发控制的两种方式: 三、内存空间初始化 四、对象头初始化(对象头包含哪些信息?) 五、执行构…...
虹科方案 | CEMEX 使用HK-Edgility 智能边缘计算平台简化其企业 WAN 管理和运营
一、应对价值 130 亿美元的跨国企业的网络挑战 “我们选择 Edgility 是因为其卓越的管理和协调功能,它为我们提供了一个端到端的工具集,可以经济高效地部署和管理我们边缘设备的生命周期。” —— Fernando Garcia -Villaraco Casero, CEMEX 全球IT 战略…...
rk3568 系统移植和编译
1。 硬件问题 尽量根据原版 evb 开发版 pcb 进行布线和移植,切记不可自行走线。 emmc 和 ddr4 选型都有要求的,按照硬件手册进行设计 2。软件问题 2.1 目前固件系统选用1.3.2 版本进行设计 解压后运行 .repo/repo/repo sync -c 更新代码 2.2 ubo…...
深度解析C++异常处理机制:分类、处理方式、常见错误及11新增功能
C 基础知识 八 异常处理 上篇 一、基础1. 异常的概念2. 异常的分类2.1 内置异常2.2 自定义异常 3. 异常的处理方式3.1 try-catch 语句3.2 throw 语句3.3 noexcept 修饰符3.4 finally 语句块 二、 异常处理机制1 try-catch 语句块2 异常处理流程3 标准异常类 三、 抛出异常1 thr…...
FPGA时序约束(四)主时钟、虚拟时钟和时钟特性的约束
系列文章目录 FPGA时序约束(一)基本概念入门及简单语法 FPGA时序约束(二)利用Quartus18对Altera进行时序约束 FPGA时序约束(三)时序约束基本路径的深入分析 文章目录 系列文章目录前言主时钟约束跨时钟域…...
JNI开发
文件结构(选中的为生成的) CMake构建不需要执行命令,会自动生成so文件打包进apk Android mk构建需要执行命令生成so文件,再打包进apk。命令如下。 # 在jni目录下执行 # 生成com_demo_cppproject_OtherNdkTest.h头文件 javac -h .…...
JAVA有哪些特点?
JAVA有以下特点: 综上所述,Java作为一种先进的面向对象编程语言,具有简单、可移植、健壮、高性能、多线程、动态性、跨平台、开放性和安全性等众多特点,已经成为广泛使用的编程语言之一。 简单易学:JAVA语言的语法与C语…...
使用读写锁提高并发
我们想要的是:允许多个线程同时读,但只要有一个线程在写,其他线程就必须等待。 ReadWriteLock ReadWriteLock的作用: 只允许一个线程写入(其他线程既不能写入也不能读取);没有写入时…...
使用@PropertySource加载配置文件
1.PropertySource和PropertySources注解 1.1.PropertySource注解概述 PropertySource注解是Spring 3.1开始引入的配置类注解。通过**PropertySource注解可以将properties配置文件中的key/value存储到Spring的Environment中,Environment接口提供了方法去读取配置文…...
事务及分布式事务解决方案
基础概念 1.1.事务 事务可以看做是一次大的活动,它由不同的小活动组成,这些活动要么全部成功,要么全部失败。 1.2.本地事务 在计算机系统中,更多的是通过关系型数据库来控制事务,利用数据库本身的事务特性来实现&a…...
【思科、华为、华三、锐捷网络设备巡检命令】
华三 screen-1ength disable 取消分页 displayversion 查看版本 displayclock 查看日期时钟 displayfan 查看风扇状态 displaypower 查看电源信息 displaycpu-usage 查看CPU利用率 displaymemory 查看内存利用率 display environment 查看温度信息 display device 查看设备信息…...
代码随想录算法训练营第五十二天
代码随想录算法训练营第五十二天| 300.最长递增子序列,674. 最长连续递增序列,718. 最长重复子数组 300.最长递增子序列674. 最长连续递增序列718. 最长重复子数组 300.最长递增子序列 题目链接:最长递增子序列 这里是不用处理if nums[i] &l…...
【Linux网络】传输层中UDP和TCP协议
文章目录 1、再谈端口号2、UDP协议3、TCP协议3.1 TCP协议段格式3.2 TCP的三次握手和四次挥手(连接管理机制)3.3 TCP的滑动窗口3.4 TCP的流量控制3.5 拥塞控制3.6 延迟应答和捎带应答3.7 面向字节流和粘包问题3.8 TCP总结 1、再谈端口号 端口号port标识一…...
工具︱ Web3加密浏览器Brave有什么特别之处?
使用浏览器来上网访问和获取各种信息和资源已经成为传统互联网民的普遍活动,下一代互联网协议Web3的核心特点是去中心化,即不依赖于中心化的服务器和数据中心,而是通过分布式的网络节点来实现数据存储和传输。 浏览器承载着信息网络与用户需求…...
绝对不能错过这份沃尔玛实用插件工具大全
龙哥最近发现很多跨境卖家都比较少运营沃尔玛这个平台。沃尔玛除了是世界500强之外,它的线上商城也弄得很好。它的电商平台主要是售卖自营的,然后你也可以入驻来卖自己的产品,就像是我们国内的京东一样。今天龙哥就给大家分享一些沃尔玛专用插…...
【Java】字符串模板拼接的方法
引 在Java中,构建字符串是非常常见的操作。在很多时候,我们都需要使用变量或输入来定制一个文本输出,例如打印日志、生成HTML代码或构建错误消息。而当需要进行字符串连接时,字符串模板是一种常用的方法。在本篇博客中࿰…...
Vue3项目中使用ECharts图表并实现自适应效果
文章目录 一、Vue3项目安装ECharts二、引入、使用ECharts1.创建图表组件,并在父组件中引入使用2.引入ECharts3.ECharts图表自适应 总结 一、Vue3项目安装ECharts 在项目中输入如下代码: npm install echarts --save安装完成可以在package.json中看到&a…...
快速跑通环信IM Android Demo
1、以Android 4.0.0 Demo为例 https://www.easemob.com/download/demo (下载别的版本的demo 可以修改版本号直接下载就就可以) https://downloadsdk.easemob.com/downloads/easemob-sdk-4.0.0.zip 运行时遇到以下报错在项目build.gradle中添加运行时遇…...
leetcode解题思路分析(一百三十九)1190 - 1196 题
反转每对括号间的子串 给出一个字符串 s(仅含有小写英文字母和括号)。请你按照从括号内到外的顺序,逐层反转每对匹配括号中的字符串,并返回最终的结果。注意,您的结果中 不应 包含任何括号。 可以简单的用栈保存当前层…...
PHP+vue基于web的小区物业管理管理系统1995a
小区物业管理系统主要是对小区物业以及居民信息进行管理,方便用户使用该资源的一种有效手段。能有效地对物业以及用户信息进行管理并为广大用户服务是该管理系统的基本要求,同时用户也可以及时了解最新的物业信息,方便地查询相关物业情况。基…...
3大突破重构多模态交互:AudioCLIP如何实现跨模态语义统一
3大突破重构多模态交互:AudioCLIP如何实现跨模态语义统一 【免费下载链接】AudioCLIP Source code for models described in the paper "AudioCLIP: Extending CLIP to Image, Text and Audio" (https://arxiv.org/abs/2106.13043) 项目地址: https://g…...
牛批了,大佬汉化版,非常实用
今天给大家推荐一款U盘容量检测工具,一款是注册表修复工具,有需要的小伙伴可以下载收藏。 第一款:validrive 市面上的U盘很多是假冒伪劣产品,有的U盘标着1T或者2T的存储空间,但实际上可能只有32G或者64G。 想要知道到底…...
Qwen3-VL-8B在软件测试中的应用:自动生成测试用例与缺陷报告截图分析
Qwen3-VL-8B在软件测试中的应用:自动生成测试用例与缺陷报告截图分析 最近和几个做软件测试的朋友聊天,大家普遍都在吐槽一件事:写测试用例和缺陷报告太费时间了。尤其是现在敏捷开发节奏快,版本迭代频繁,测试人员不仅…...
音频处理必看:短时傅里叶变换(STFT)在语音识别中的5个典型应用场景
音频处理必看:短时傅里叶变换(STFT)在语音识别中的5个典型应用场景 语音识别技术正以前所未有的速度渗透到智能家居、车载系统、客服机器人等日常场景中。作为这项技术的核心算法之一,短时傅里叶变换(STFT)就像一位隐形的音频解码…...
MacBook安装OpenClaw全记录:Phi-3-vision-128k-instruct多模态初体验
MacBook安装OpenClaw全记录:Phi-3-vision-128k-instruct多模态初体验 1. 为什么选择OpenClawPhi-3组合 去年第一次听说OpenClaw时,我就被这个"能直接操作电脑的AI助手"吸引了。作为一个经常需要处理多模态内容的创作者,传统AI工具…...
7天掌握LAV Filters:构建终极DirectShow媒体解码方案完全指南
7天掌握LAV Filters:构建终极DirectShow媒体解码方案完全指南 【免费下载链接】LAVFilters LAV Filters - Open-Source DirectShow Media Splitter and Decoders 项目地址: https://gitcode.com/gh_mirrors/la/LAVFilters LAV Filters是一套基于FFmpeg的开源…...
Face3D.ai Pro零基础入门:5分钟从照片到3D人脸,小白也能玩转
Face3D.ai Pro零基础入门:5分钟从照片到3D人脸,小白也能玩转 1. 引言:从照片到3D人脸的魔法 想象一下,用手机随手拍一张自拍,5分钟后就能得到一个可以360度旋转的3D人脸模型。这不是科幻电影里的场景,而是…...
揭秘宇树科技G1人形机器人:消费级市场的破局者与挑战
1. G1人形机器人:消费级市场的颠覆者 当身高1.3米的G1人形机器人站在我面前时,第一感觉是"这玩意儿居然不到10万"。作为宇树科技进军消费级市场的首款产品,G1确实在价格和体积上做了精准定位。相比那些动辄几十万的工业级机器人&am…...
别再死记硬背了!用Codesys可视化玩转按钮和指示灯:5个工业场景实战案例拆解(含配方管理思路)
Codesys可视化实战:5个工业场景下的按钮与指示灯高阶应用 在工业自动化领域,人机界面(HMI)的设计直接影响操作效率和系统可靠性。传统PLC编程往往过于关注功能实现而忽视交互体验,导致许多工业现场的操作面板充斥着杂乱无章的按钮和难以理解的…...
2026年花洒产品推荐:四款热门花洒横评,闭眼入不踩雷
其实选花洒不用盲目追大牌,核心看体验、看品质、看适配性。今天就带来四款热门花洒的深度横评,涵盖瑞尔特、飞利浦、小米米家、九牧四大主流品牌,每款都结合真实使用体验拆解,不罗列参数、不夸大宣传,让每天的沐浴都能…...
