返回顶部
首页 > 资讯 > 后端开发 > Python >详解Java对象创建的过程及内存布局
  • 188
分享到

详解Java对象创建的过程及内存布局

2024-04-02 19:04:59 188人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录一、对象的内存布局二、对象的创建过程三、对象访问定位四、参考一、对象的内存布局 对象头 对象头主要保存对象自身的运行时数据和用于指定该对象属于哪个类的类型指针。 实例数据 保存对

一、对象的内存布局

对象头

对象头主要保存对象自身的运行时数据和用于指定该对象属于哪个类的类型指针

实例数据

保存对象的有效数据,例如对象的字段信息,其中包括从父类继承下来的。

对齐填充

对齐填充不是必须存在的,没有特别的含义,只起到一个占位符的作用。

二、对象的创建过程

实例化一个类的对象的过程是一个典型的递归过程。

在准备实例化一个类的对象前,首先准备实例化该类的父类,如果该类的父类还有父类,那么准备实例化该类的父类的父类,依次递归直到递归到Object类。

此时,首先实例化Object类,再依次对以下各类进行实例化,直到完成对目标类的实例化。具体而言,在实例化每个类时,都遵循如下顺序:

1.先依次执行实例变量初始化和实例代码块初始化

2.执行构造函数初始化。也就是说,编译器会将实例变量初始化和实例代码块初始化相关代码放到类的构造函数中去,并且这些代码会被放在对超类构造函数的调用语句之后,构造函数本身的代码之前。

三、对象访问定位

Java程序需要通过栈上的引用数据来操作堆上的具体对象。

对象的访问方式取决于虚拟机实现,目前主流的访问方式有使用句柄和直接指针两种。

句柄,可以理解为指向指针的指针,维护指向对象的指针变化,而对象的句柄本身不发生变化;指针,指向对象,代表对象的内存地址。

句柄

Java堆中划分出一块内存来作为句柄池,引用中存储对象的句柄地址,而句柄中包含了对象实例数据与类型数据各自的具体地址信息。

对象类型数据是被虚拟机加载的类信息。

在这里插入图片描述

直接指针

直接指针方式中,并没有划分句柄池,引用中存储的直接就是对象地址。

在这里插入图片描述

四、参考

周志明,《深入理解Java虚拟机》

到此这篇关于详解Java对象创建的过程及内存布局的文章就介绍到这了,更多相关Java对象创建及内存布局内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 详解Java对象创建的过程及内存布局

本文链接: https://lsjlt.com/news/127622.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 详解Java对象创建的过程及内存布局
    目录一、对象的内存布局二、对象的创建过程三、对象访问定位四、参考一、对象的内存布局 对象头 对象头主要保存对象自身的运行时数据和用于指定该对象属于哪个类的类型指针。 实例数据 保存对...
    99+
    2024-04-02
  • 详解Java对象的内存布局
    目录前言对象内存构成对象头实例数据对齐数据结尾前言 今天来讲些抽象的东西 -- 对象头,因为我在学习的过程中发现很多地方都关联到了对象头的知识点,例如JDK中的 synchroniz...
    99+
    2024-04-02
  • Java对象存储内存布局详解
    目录Java对象存储内存布局Java对象的访问定位Java对象的创建过程Java对象分配内存是否线程安全Java类实例化顺序Java对象存储内存布局 众所周知,Java是一门面向对象...
    99+
    2023-05-18
    Java对象存储内存布局 Java内存布局 Java对象内存
  • Java对象的内存布局全流程
    目录对象内存布局对象占用内存空间证明对象内存布局开始先抛出一个问题:一个对象o,Object o = new Object();创建完成后会占用多少字节的内存? 要能回答这个问题,就...
    99+
    2024-04-02
  • java存储以及java对象创建的流程(详解)
    java存储:1)寄存器:这是最快的存储区,位于处理器的内部。但是寄存器的数量有限,所以寄存器根据需求进行分配。我们不能直接进行操作。2)堆栈:位于通用RAM中,可以通过堆栈指针从处理器那里获取直接支持。堆栈指针往下移动,则分配新的内存。网...
    99+
    2023-05-31
    java 存储 对象创建
  • Java中对象的内存布局
    这篇文章主要讲解了“Java中对象的内存布局”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java中对象的内存布局”吧!作为一名Java程序员,我们在日常工作中使用这款面向对象的编程语言时,...
    99+
    2023-06-15
  • Java对象的内存布局详细介绍
    目录一、对象头1)、Mark Word2)、类型指针3)、数组长度(只有数组对象才有)二、实例数据三、对齐填充四、使用JOL工具分析对象内存布局在HotSpot虚拟机中,对象在内存中...
    99+
    2023-02-13
    Java对象内存布局 Java内存布局 Java对象内存
  • c++对象内存布局示例详解
    目录前言继承对象的内存布局具有多重继承和虚拟功能的对象的内存布局总结前言 了解你所使用的编程语言究竟是如何实现的,对于C++程序员可能特别有意义。首先,它可以去除我们对于所使用语言的...
    99+
    2024-04-02
  • Java 对象在 JVM 中的内存布局超详细解说
    目录一、new 对象的几种说法二、Java 对象在内存中的存在形式1. 栈帧(Frame)2. 对象在内存中的存在形式 ①3. 对象中的方法存储在那儿?4. Java 对象在内存中的...
    99+
    2024-04-02
  • Java对象的创建过程
    Java对象创建过程JVM遇到一条新建对象的指令时首先去检查这个指令的参数是否能在常量池中定义到一个类的符号引用。然后加载这个类;推荐学习:java视频教程为对象分配内存。一种办法“指针碰撞”、一种办法“空闲列表”,最终常用的办法“本地线程...
    99+
    2019-04-12
    java入门 Java 对象
  • java对象创建的过程
    1、检查指令的参数是否能在常量池中定位到一个类的符号引用 2、检查此符号引用代表的类是否已被加载、解析和初始化过。如果没有,就先执行相应的类加载过程 3、类加载检查通过后,接下来虚拟机将为新生对象分配内存。 4、内存分配完成之后,虚拟机将分...
    99+
    2023-08-30
    java jvm 开发语言
  • Java对象创建内存案例解析
    Java对象创建内存图解析 1. 栈 Java栈的区域很小 , 特点是存取的速度特别快,栈存储的特点是, 先进后出,存储速度快的原因: 栈内存, 通过 栈指针'来创...
    99+
    2024-04-02
  • 怎么在Java中布局对象内存
    怎么在Java中布局对象内存?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。常用的java框架有哪些1.SpringMVC,Spring Web MVC是一种基于Java的实...
    99+
    2023-06-14
  • Java中怎么给对象创建内存
    这篇文章将为大家详细讲解有关Java中怎么给对象创建内存,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Java对象创建内存图解析1. 栈Java栈的区域很小 , 特点是存取的速度特别快,栈存...
    99+
    2023-06-20
  • 怎么在java中创建一个内存布局
    本篇文章给大家分享的是有关怎么在java中创建一个内存布局,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Java可以用来干什么Java主要应用于:1. web开发;2. And...
    99+
    2023-06-14
  • 详解Java反射创建对象
    一、什么是反射 Java Reflaction in Action中的解释:反射是运行中的程序检查自己和软件运行环境的能力,它可以根据它发现的进行改变。通俗的讲就是反射可以在运行时根...
    99+
    2024-04-02
  • Java对象在内存中的布局是如何实现的?
    1、-XX:FieldsAllocationStyle 对象在内存中的布局首要相关配置就是FieldsAllocationStyle,这个配置有3个可选值,即0、1、2。当值为2的时...
    99+
    2024-04-02
  • mysql创建存储过程及函数详解
    目录1. 存储过程1.1. 基本语法1.2 创建一个指定执行权限的存储过程1.3 DELIMITER 的使用2. 创建函数 1. 存储过程 1.1. 基本语法 create pr...
    99+
    2024-04-02
  • java中对象创建有哪些过程
    本篇文章给大家分享的是有关java中对象创建有哪些过程,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Java的优点是什么1. 简单,只需理解基本的概念,就可以编写适合于各种情况...
    99+
    2023-06-14
  • Java spring 通过注解方式创建对象的示例详解
    java spring 通过注解方式创建对象 首先 我们要搞清楚一个基础概念什么是注解? 注解可以说是代码里的一些特殊标记。格式是 @() 里面可以有 属性=属性的值 可以有多个属性...
    99+
    2023-02-08
    spring注解创建对象 java spring注解方式创建对象 java spring注解 Spring注解开发
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作