美文网首页
java 对象基础信息(创建过程,内存结构,如何定位,分配)

java 对象基础信息(创建过程,内存结构,如何定位,分配)

作者: 填坑之路_DK | 来源:发表于2021-03-30 11:13 被阅读0次

对象创建过程

class T{
  int m= 8;
}
T t = new T();

对应汇编指令

0 new #2<T>   // 分配内存
3 dup
4 invokespecial #3 <T.<init>>  //初始化(执行init方法)
7 astore_1    //建立关联( 将引用指向到该内存)
8 return

内存结构

Object o = new Object();
在内存中的组成为:

            类型      起始位置 长度 
头           markword   0       4  bytes (四个字节)  存锁信息
头           markword   4       4  bytes (四个字节)  存锁信息
头           classpoint 8       4  bytes (四个字节) (类定义指针 开启压缩后为 4个字节 不开启为8,默认开启 64位jvm)
(数组特有)    length    12       4  bytes (四个字节)  数组特有结构
              实例数据   -       -        (空对象没有实例数据,否则默认往后追加, 注意 普通引用 例如String  也是默认压缩 为4字节,不压缩为8 64位jvm)
              补位数据   12      4  bytes (四个字节,由于cpu读取和总线宽度有关,为了读取速度更快,jvm会将对象占用内存大小,优化为 8的 倍数)

markword存储信息包括

  • synchronized锁信息
  • GC信息(分代年龄)
  • HashCode(对象独一无二的HashCode,不是重写的方法值)

对象怎么定位

  • 句柄方式 : 间接寻址,(GC稳定)
  • 直接指针 : 直接寻址

对象分配过程

  • 局部小对象可以存储在栈中(C struct 结构体)
  • 大对象 默认是50M 可以通过参数配置 -XX:PretenureSizeThreshold
  • TLAB 线程本地缓存区(避免线程间内存竞争,不需要锁),也在伊甸园区
  • AGE 超过年龄限制
分配过程

工具

open jdk 提供 JOL = Java Object LayOut java 对象 布局
(打印对象内存模型 System.out.println(ClassLayout.parseInstance(o).toPrintable());)

相关文章

  • java 对象基础信息(创建过程,内存结构,如何定位,分配)

    对象创建过程 对应汇编指令 内存结构 Object o = new Object();在内存中的组成为: mark...

  • OOM与内存优化一

    内存管理基础Java内存分配模型 Java的对象生命周期 1.创建 为对象分配内存空间 构造对象 2.应用 此时...

  • java对象的创建过程是什么

    java对象的创建过程是什么 java对象的创建过程: 类加载检查-->分配内存-->初始化零值-->设置对象头-...

  • Java对象

    Java对象的内存布局?对象的访问?new对象的过程? 一、Java对象的内存布局 对象的创建过程就是在堆上分配实...

  • [JVM入门指南01]内存区域与溢出异常

    本文将介绍JVM的结构、对象的创建和分配过程、内存溢出。 JVM介绍 java文件执行流程: .java文件通过J...

  • Java对象创建与内存分布

    本文主要讲述Java对象在虚拟机中创建,分配内存,初始化的过程,以及分配内存,引用对象的几种常见方式。 对象创建 ...

  • 堆区结构:分配-创建-内存布局

    堆区结构 1、对象分配过程 2、对象创建过程 3、对象内存布局 堆区就是一组连续指定的内存地址...

  • JVM(八):Java 对象模型

    JVM(八):Java 对象模型 本文将学习对象是如何创建的,对象的内存布局,以及如何定位访问一个对象。 对象创建...

  • 【问答】补充

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

  • 秒懂JAVA虚拟机

    一、JAVA内存结构 二、堆内存分配 new:新生代 old:老年代new一个对象出来后,如果创建的对象非常...

网友评论

      本文标题:java 对象基础信息(创建过程,内存结构,如何定位,分配)

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