首页 > 编程语言 >Java对象头你不知道的地方

Java对象头你不知道的地方

时间:2024-05-25 11:27:34浏览次数:30  
标签:Java 对象 32 虚拟机 地方 64 bit 指针

在Java中,每个对象都拥有一个对象头,这些对象头包含了关于对象的一些元数据信息。对象头(Header)包含2部分(若为数组,则包含3部分):

一、第一部分为Mark Word,用于存储对象自身的运行时数据,如哈希码、GC 分代年龄、锁状态标志、线程持有的锁、偏向线程 ID、偏向时间戳等。在32 位虚拟机中占 32 bit,在64 位虚拟机中占 64 bit。


二、第二部分是类型指针Klass Pointer,即指向对象的类的元数据指针,虚拟机通过这个指针确定这个对象是哪个类的实例以及类的字段、方法信息。
在32位虚拟机中占用32 bit,在64位虚拟机中占用64 bit。
若关闭了指针压缩(-XX:-UseCompressedOops(Ordinary Object Pointer普通对象指针)),则Klass Pointer占用64 bit。
若打开了指针压缩,则Klass Pointer占用32 bit。


三、如果对象是 Java 数组,对象头中还有一块用于记录数组长度(Array Length)的数据,因为普通对象可以通过 Java 对象元数据确定大小,而数组对象不可以。
这个字段在32位和64位的虚拟机中都占用32 bit。


四、引申
1.对象头的大小和具体内容会因JVM的实现和对象的具体类型(如数组、普通对象等)的不同而有所不同。
2.在32位JVM中,对象头通常是8字节(Mark Word占4字节,Klass Pointer占4字节)。
3.在64位JVM中,对象头的大小可能是12字节(开启指针压缩)或16字节(不开启指针压缩),取决于JVM的实现和是否开启压缩指针。
 


微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。

我是程序员小迷(致力于C、C++、Java、Kotlin、Android、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。

欢迎关注。助您在编程路上越走越好!

标签:Java,对象,32,虚拟机,地方,64,bit,指针
From: https://blog.csdn.net/cxsjabcabc/article/details/139194688

相关文章

  • JavaScript入门指南:从零开始你的编程之旅
        JavaScript是现代web开发不可或缺的一部分,作为一种强大且灵活的编程语言,它可以在浏览器中运行,为网页添加互动功能。无论你是完全的初学者,还是有其他编程语言的基础,本文将引导你从零开始学习JavaScript。我们将涵盖基础知识、关键概念和实践技巧,帮助你迅速上手并......
  • Java方法详解
    Java方法详解1、何谓方法Java方法是语句的集合,它们在一起执行一个功能。方法是解决一类问题的步骤的有序组合方法包含于类或对象中方法在程序中被创建,在其他地方被引用设计方法的原则方法的本意是功能块,就是实现某个功能的语句块的集合。我们设计方法的时候,最好保持方法......
  • Django视图层——2HttpReqeust对象&QueryDict对象
    HttpReqeust对象服务器接收到http协议的请求后,会根据报文创建HttpRequest对象视图函数的第一个参数是HttpRequest对象在django.http模块中定义了HttpRequest对象的API属性下面除非特别说明,属性都是只读的path:一个字符串,表示请求的页面的完整路径,不包含域名method:......
  • 如何判断Java代码中异步操作是否完成
    在许多应用程序中,我们经常使用异步操作来提高性能和响应度。在Java中,我们可以使用多线程或者异步任务来执行耗时操作,并且在后台处理过程完成后获取结果。但是,在使用异步操作时,我们通常需要知道异步任务何时完成,以便进行下一步的操作。本篇文章将介绍几种常见的方法来判断Java......
  • JS核心语法【流程控制语句、函数】;DOM【查找元素、操作元素、事件】--学习JavaEE的day
    day48JS核心技术JS核心语法继day47注意:用到控制台输出、弹窗流程控制语句Ifelse、For、For-in(遍历数组时,跟Java是否一样【java没有】)、While、Dowhile、break、continue案例:1.求1-100之间的偶数之和<!DOCTYPEhtml><html> <head> <metacharset="UTF......
  • 基于Springboot的在线英语阅读分级平台(有报告)。Javaee项目,springboot项目。
    演示视频:基于Springboot的在线英语阅读分级平台(有报告)。Javaee项目,springboot项目。项目介绍:采用M(model)V(view)C(controller)三层体系结构,通过Spring+SpringBoot+Mybatis+Vue+Maven+Layui+Elementui来实现。MySQL数据库作为系统数据储存平台,实现了基于B/S结构的Web......
  • 基于Springboot的国产动漫网站(有报告)。Javaee项目,springboot项目。
    演示视频:基于Springboot的国产动漫网站(有报告)。Javaee项目,springboot项目。项目介绍:采用M(model)V(view)C(controller)三层体系结构,通过Spring+SpringBoot+Mybatis+Vue+Maven+Layui+Elementui来实现。MySQL数据库作为系统数据储存平台,实现了基于B/S结构的Web系统。界......
  • jdk版本已经更新了还出现java8 不允许选项 --add-modules
    突然有一天在编码的时候弹出这个问题,无法实现编译当我们删除了modules时却发现导入的包不能使用了我摸索的解决方法1,首先win+R弹出cmd窗口输入 java-version 查出jdk版本注意如果下载了需要检查系统环境中path的路径是否为java_home...是否为第一位因为tomca......
  • 【源码翻译之交互式对象包 AIS-AIS_ColoredShape.hxx文件 多颜色交互式对象
    类AIS_ColoredShape形状的呈现具有可自定义的子形状属性。此类可以将topods的子拓扑分别设置不同的颜色然后作为一个整体显示成员类型定义文档◆DataMapOfDrawerCompdtypedefNCollection_IndexedDataMap<Handle<AIS_ColoredDrawer>,TopoDS_Compound,TColStd_MapT......
  • 【华为OD】D卷真题 100分: 阿里巴巴找黄金宝箱(I) JavaScript代码实现[思路+代码]
    【华为OD】2024年C、D卷真题集:最新的真题集题库C/C++/Java/python/JavaScript【华为OD】2024年C、D卷真题集:最新的真题集题库C/C++/Java/python/JavaScript-CSDN博客 JS、C、python、C++、Java代码实现:【华为OD】D卷真题100分:阿里巴巴找黄金宝箱(I)JavaScript代码实现......