JAVA中对象在内存中的布局及Object o = new Object()在内存中占了多少字节

美团面试:如何计算一个对象在内存中占多少个字节? 在分配对象的时候会有一些基本的规则,我们可以根据一些规则大致能判断出来对象大小。 阅读详情

一、引入以下Jar包

        <dependency>
            <groupId>org.openjdk.jol</groupId>
            <artifactId>jol-core</artifactId>
            <version>0.9</version>
        </dependency>

二、执行以下语句

Object o = new Object();
// class的布局.解析o这个对象.再以打印到控制台的格式输出
System.out.println(ClassLayout.parseInstance(o).toPrintable());

打印对象在内存中的布局结果:
在这里插入图片描述
OFFSET:偏移量,从第几个字节开始
object header:对象头

在这里插入图片描述
在这里插入图片描述
我从上图看到classpointer占4个字节,其实它是占8个字节的,进过压缩之后才占4个字节,如下:
在这里插入图片描述
JVM它是多少位的,那么classpointer就占多少字节,64位就占8个字节

UseCompressedClassPointers:压缩classpointer,就占4个字节

UseCompressedOops:Oops(ordinary object pointers)普通对象指针(如:int,String),也经过压缩,4个字节

关于 Object obj = new Object() jvm遇到new指令,检查能否在常量池中定位到一个类的符号引用,检查这个符号引用代表的类是否已经经历类加载的过程,没有就执行类加载。内存分配完成后,jvm将除对象头之外的内存空间都初始化为零值,保证对象的字段可以不初始化直接使用。MarkWord=8字节,ClassPointer=4字节,ArrayLength=4字节。new一个长度为10的数组,一个元素的引用占4字节,所有元素引用一共占40字节。栈上的引用变量,是由JVM来实现访问对象的方式的。引用类型的变量默认开启压缩,压缩后是4字节。...... 阅读详情

相关推荐

ROS探索篇(一)在Gazebo中实现移动机器人仿真与环境搭建

$x+y=z$

weixin_52029211的博客 4621

Java对象在jvm堆内存中的存储布局

这次说的是64bit的jvm,暂不谈32bit的jvm,两者的对象大小是不一样的。 java对象的存储布局分为两种情况:普通对象 和 数据。 先说普通对象吧:如下图 那为啥对齐单元的大小是8个字节呢? 因为是64bit位的jvm,8个字节刚好是64个比特位,这样读取的效率高。 那这个东西我们在代码里面看得到吗? 可以看到的。 我们在pom.xml里面引入依赖: <dependency> <groupId>org.openjdk.jol...

wy_05689的博客 1571

从论文到生产:iSLIP优先级匹配算法在SDN交换机中的20年演进史

本文回顾了iSLIP优先级匹配算法在SDN交换机中的20年演进历程,从斯坦福大学的原始论文到现代芯片实现。通过独特的指针滑动和迭代循环机制,iSLIP算法显著提升了交换机的吞吐量和公平性,解决了传统FIFO调度的队头阻塞问题。文章详细探讨了算法在硬件实现中的工程挑战、开源实践及未来AI时代的智能调度方向。

weixin_29230649的博客 331

关于Object 0 = new Object() 的追魂九连问

1、解释一下对象的创建过程?(半初始化)2、DCL要不要加volatile问题?(指令重排)3、对象在内存中的存储布局?(对象与数组的存储不同)4、对象头具体包含什么?5、对象怎么定位?(直接、间接)6、对象怎么分配?(栈上-线程本地-Eden-Old)7、Object 0 = new Object()在内存中占多少个字节8、为什么hotspot不使用c++对象来代表java对象?9、Class对象是在堆还是在方法区?

qq_65377318的博客 1433

微波射频学习笔记18-------偶极子天线和微波天线设计介绍

几种天线设计方法的介绍 一、偶极子天线 1.天线模型 两根紧挨着的金属导体,长度均为四分之一波长,直径均远小于波长,两导体间距也远小于波长。 2.天线性能的设计因素 ① 单个导体长度L:(光速/频率)/4=四分之一波长(在空气中传播的波长),但在导体中传播,波长会变短; ② 导体半径R:远小于波长即可,使用导电率高些的材料,市面上常见直径零点几毫米就挺好,或者用波长/200,得出一个小200的值,也算远小于波长; ③ 两导体间距S:远小于波长即可,可以比半径更小点。 以上三个变量L、R、S,均可在仿真软件

Sil_sprout 1万+

动态规划法:n*m方格前进问题

在一个n*m的方格中,m为奇数,放置有n*m个数,方格中间的下方有一人,此人可按照正前方相临的五个方向(方格)前进但不能越出方格。人每走过一个方格必须取此方格中的数。要求找到一条从底到顶的路径,使其数相加之和为最大。输出和的最大值。 算法设计: 可以使用动态规划方法,从顶部开始,将第二排的每个数加上顶部第一排的最优解,将6排的问题缩小为5排的问题,然后重复该操作,直到底部最后一排,此时

Winifred_1997的博客 4675

JavaScript中new Object()是什么?

问题引入: 写请假系统的时候,看到同学用了很多var xx = new Object(),不知道什么用处。 于是寻找Object()的用法。 js中var a=new Object()和var a={}有什么区别吗? 应该是没有区别的,两者都是生成一个默认的Object对象。js和其它语言一样,一切对象的基类都是Object,所以,new Object()和简易的{}是同样的空对象,就是默认的对象。本来我以为{}应该是一个没有任何属性和方法的对象,但事实证明,var a = {},a.toString()等

weixin_45916711的博客 7218

显示模组Bonding IC气泡问题的诊断与优化策略

本文深入分析了显示模组Bonding IC气泡问题的成因与优化策略,涵盖IC两端剥离气泡、彩虹状水汽气泡、电极下方无规律气泡及IC输入端气泡等类型。通过工艺参数优化、材料存储处理、清洁环境控制及维修品特殊处理等多维度解决方案,有效降低气泡不良率。同时介绍了纳米改性ACF材料、激光辅助排泡技术等前沿解决方案,为触控显示行业提供实用参考。

weixin_26805597的博客 420

一文搞懂Object.create()、new Object()和{}创建对象的区别

前言 有道是,万物皆对象。我们在平常的开发过程中肯定是要使用到对象的,我们创建一个对象的时候,最常用的当然是用最简单直接的字面量创建,例如let a = {}. 但是,想必大家都知道,js创建对象还有可以用new操作符或者是Object.create()方法 总结:创建对象的三种方法: 1. 字面量创建 :var obj1 = {}; 2. new操作符创建:new Object(); 3. Object.create()创建:Object.create(null); 那么,他们之间有什么

坚信万物皆可切的切图仔 3661

【网络与爬虫 53】Scrapy-Prometheus实战指南:打造企业级爬虫监控体系的终极解决方案

本文深入探讨Scrapy-Prometheus集成技术,通过费曼学习法从监控痛点出发,详细讲解如何在Scrapy爬虫中集成Prometheus指标收集系统。涵盖从基础配置到企业级监控体系的完整实战指南,帮助开发者构建可观测性强、可维护性高的分布式爬虫监控平台,实现爬虫性能的精准监控和智能告警。

熵数实验室 1586

HarmonyOS 鸿蒙开发DevEco Studio OpenHarmony:安全测试

通过对HarmonyOS应用生命周期建模和应用攻击面建模,采用静态数据流分析技术,提高漏洞发现的准确率,同时覆盖20余种攻击面,65+漏洞测试项,帮助开发者提前发现和识别漏洞隐患。在检测报告中,会针对每一项漏洞风险项给出明确的修复建议,可以帮助开发者快速修复漏洞。

斌擎科技 1182

new Object的过程

5、判断构造函数返回值类型,若不是对象类型,返回obj。3、形成原型链,将构造函数原型与obj链接。4、执行构造函数,绑定this指向为obj。1、创建一个Object对象obj。2、获取传入的构造函数。

qq_45838276的博客 1426

【Proteus仿真】51单片机+DAC0832+LM358放大电路波形发生器

【Proteus仿真】51单片机+DAC0832+LM358放大电路波形发生器

perseverance51博客 5787

Object o = new Object()在内存中占了多少字节

一、 结论 想要知道 Object o = new Object();在内存中占用了多少字节,可以使用如下方法直观的看到。 maven中添加依赖 <dependency> <groupId>org.openjdk.jol</groupId> <artifactId>jol-core</artifactId> <version>0.9</version> </dependency>

u011727756的专栏 5350

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Object o=new Object()在内存中占用多少字节

这参数后面的oop可不是面向对象编程Object Oriented Programming的意思,而是普通对象指针Ordinary Object Pointer。启用每个Class的属性指针(静态成员变量);每个对象的属性指针;普通对象数组的每个元素指针。当然,压缩也不是所有的指针都会压缩,对一些特殊类型的指针,JVM是不会优化的,例如指向PermGen的Class对象指针、本地变量、堆栈元素、入参、返回值和NULL指针不会被压缩。

xue0147的专栏 1575

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

小姐姐问:Object obj=new Object()究竟占多少字节啊?

目录 概述 Java 对象头内存模型 验证模型 内存对齐 非空对象占用内存计算 总结 概述 公司小姐姐今天突然找我聊天,那个激动啊,然后她突然问我你有对象吗?我心里一愣,难道我的春天来了吗?但是接下来一句话让我心灰意冷 啊,你知道Object obj=new Object()占多少字节吗?我男朋友问我,我内心真的是一万头***奔腾而过啊,处于耿直的程序员,我们来看一下对象到底占用多...

Java架构师联盟 5657

蓝牙模块HM-10手册

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

java new object 内存_Object o = new Object()在内存中占了多少字节

一、 结论想要知道 Object o = new Object();在内存中占用了多少字节,可以使用如下方法直观的看到。maven中添加依赖org.openjdk.joljol-core0.9写一个测试类public class ObjectLayOutTest {public static void main(String[] args) {Object o = new Object();Sys...

weixin_39932300的博客 314

面试官:Object o = new Object() 占用了多少字节?

作者 |哪儿来的moon责编 | 张文头图 |优快云 下载自视觉中国来源 | 哪儿来的moon(ID:onetraveller_llxz)面试的时候,要是面试官问了标题那种问题...

优快云资讯 1557

你知道Object o = new Object()在内存中占多少字节吗?

如何知道一个对象在内存中的大小呢?C语言有个叫sizeOf的东西,很方便就能知道对象大小。但是Java没有这样的东西啊,不慌,Java本身有一个Agent技术。 Java Agent技术 Agent是个什么机制呢? 有一个jvm虚拟机,还有一个class要load到内存,在load内存的过程中可以加一个Agent代理,这个代理可以截获这些class文件(001 010等二进制码),并可以对他做任意修改,当然也就可以读取到整个Object的大小。 制作一个探测Object大小的Agent 新建一个项目.

hundred_li_journey的博客 898

面试题:Object o= new Object()在内存中占用多少字节?

面试题如下: 请解释一下对象的创建过程? 对象在内存中的存储布局? 对象头具体包括什么? 对象怎么定位? 对象怎么分配? Object o = new Object()在内存中占用多少字节? ================================================ 对象的创建过程: 类加载: a.class loading; b.class linking:verification、preparation、resolution; c.class initializing(类的

lyy9902的博客 810

Java对象内存布局: 一个Object对象到底占用多少字节?用JOL工具解开谜底

*** 字段重排序: JVM会优化字段排列以减少内存占用*/// 未优化的字段排列byte b;// 1字节long l;// 8字节int i;// 4字节short s;// 2字节// 1字节char c;// 2字节// 总共: 1+8+4+2+1+2 = 18字节// 实际: 需要对齐填充// JVM自动重排序后的等价排列// JVM重排序规则:// 1. 按字段长度从大到小排列// 2. 相同长度的按声明顺序排列// 3. 父类字段在子类字段之前。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 1301

Object o = new Object() 占多少字节?

Java技术栈www.javastack.cn关注阅读更多优质文章小小面试一下前言蜜语最近马师傅火的不要不要的,虽然没有抢到耗子尾汁的商标注册权,但是必须得蹭一波马师傅的热度,下面就是闪...

Java技术栈,分享最主流的Java技术 1117

面试题(对象在内存中的内存布局):Object o = new Object()在内存中占多少字节

面试题(对象在内存中的内存布局):Object o = new Object()在内存中占多少字节 一、首先我们利用ClassLayout类去解析实例对象并打印输出并进行分析 输出结果: 以上运行结果与下面这张图(对象在内存中的存储布局)一致; markword对象头占8字节:用于存储锁信息(后续将锁升级过程中会提及) 类型指针如果采用压缩指针的方式则占4字节,没有采用压缩指针则占8字节 实例数据:由于我们这边只new了一个对象,没有设置成员变量,这边为0;假如有int类型的变量则为4字节 对齐是为了保证

a1290320893的博客 394

Java new一个Object()到底占用多少个字节?

Java Object obj = new Object()到底占用多少个字节? Java中没有类似C的sizeof的操作符,如何获取一个对象实际占用的字节数呢? 有一种比较方便的方式是通过启动jdk自带的jvisualvm来观察。 先写一个测试类 public class TestObjSize { //定义一个直接继承Object的类,用于观察 public static class Te...

编程架构三分天下:分层、分治、分时序。 6557

Java new一个Object占多少字节

Java new一个空Object所占内存大小 使用OpenJDK提供的jol(Java Object Layout)库进行观察。 Maven引入依赖: <!-- https://mvnrepository.com/artifact/org.openjdk.jol/jol-core --> <dependency> <groupId>org.openjdk.jol</groupId> <artifactId>jol-core<

MLT_Niku的博客 1734
上一篇: Guava Cache缓存入门
下一篇: Java中的泛型
suixinghero
博客等级 码龄7年 10粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值