美文网首页一些收藏
JVM学习7·JVM中对象的内存布局

JVM学习7·JVM中对象的内存布局

作者: 那钱有着落吗 | 来源:发表于2022-01-20 10:51 被阅读0次

JVM中对象存储的内存布局有三大部分,分别是对象头,实例数据,对齐填充;

1.对象头

对象头分为三部分,第一部分我们知道有这么个东西就行,第二部分其实就是代表这个对象的来源,比如这个对象是user,那么他的类型就指向User这个类,第三部分就好理解了,就说他如果是一个数组,这里记录了他的长度。

2.实例数据

实例数据部分是对象真正存储的有效信息,也既是我们在程序代码里面所定义的各种类型的字段内容,无论是从父类继承下来的,还是在子类中定义的都需要记录下来。

注意:对象头加上实例数据的大小必须是8字节的整数倍,如果不够,对其填充来补充,这样就方便JVM来进行内存的分配以及垃圾回收;例如两者加起来30字节,那么对齐填充就会再占据2字节凑够8的整数倍

3.对象的访问定位

昨天是虚拟机规范,要访问对象可以通过两种方式:

第一种是使用句柄,句柄池中存放的是到对象实例数据或者类型数据的指针,相当于一个中间人,如果实例数据修改的话,只需要修改句柄池中的指针指向即可,而不需要对java栈中的引用做任何的修改,这样的方式增加了稳定性,但是性能有所下降

第二种是使用直接指针,相较于第一种方式,直接指针就是引用对象直接可以指向java堆中的对象,可以直接访问,然后java堆中的对象还有指向方法区的对象类型数据的指针。这样的话虽然性能效率高了,但是稳定性有所下降,因为堆中的对象有所修改的话,那么java栈中的引用就要调整指针指向了。

相关文章

  • JVM-对象内存布局

    jvm-对象内存布局 对象内存结构概述 对象的创建过程: jvm将对象所在的class文件加载到方法区中 jvm读...

  • JVM学习7·JVM中对象的内存布局

    JVM中对象存储的内存布局有三大部分,分别是对象头,实例数据,对齐填充; 1.对象头 对象头分为三部分,第一部分我...

  • 对象的结构

    对象内存布局(结构) 对象头 1.对象头形式 JVM中对象头的方式有以下两种(以32位JVM为例): 1.1.普通...

  • JVM读书笔记

    深入理解JVM(1) : Java内存区域划分 深入理解JVM(2) : Java堆中对象创建、布局、访问全过程 ...

  • JVM中对象的内存布局详解

    JVM(三)JVM中对象的内存布局详解 2018年01月19日 23:21:47 B8613A 阅读数:513更多...

  • [JVM] JVM内存结构浅析

    JVM内存布局规定了Java在运行过程中内存申请、分配、管理的策略,保证了JVM高效稳定运行。 经典的JVM内存布...

  • Java基础 - JVM内存

    Java内存机制 基本类型的变量放在栈里; 封装类型中,对象放在堆里,对象的引用放在栈里。 jvm内存 JVM7逻...

  • JVM-JMM

    JMM(jvm内存模型) by shihang.mai 对象的内存布局 对象的创建过程class loading-...

  • 【问答】补充

    Java JVM如何管理内存的? Java中内存管理是JVM自动进行的,创建对象或者变量时JVM会自动分配内存,当...

  • Synchronized原理

    1、认识JAVA对象的组成结构 对象的内存结构:在JVM中,对象在内存中的布局分为三块区域:对象头、实例数据和对齐...

网友评论

    本文标题:JVM学习7·JVM中对象的内存布局

    本文链接:https://www.haomeiwen.com/subject/gdhjhrtx.html