zoukankan      html  css  js  c++  java
  • 3. 对象在内存中的布局

    在HotSpot虚拟机中,对象在内存中的布局分为三块:对象头、示例数据、对齐填充。

    1.对象头
        包括两部分:Mark Word、类型指针、数组长度(if 数组对象)
        (1)Mark Word:存储对象自身的运行时数据(哈希码、GC年龄、锁标志、持有的锁等)。被设计成非固定数据结构,根据对象状态占用内部空间。
        (2)类型指针:对象指向它的类元数据的指针。虚拟机通过这个指针确定对象是哪个类的实例。
        (3)数组长度:对于数组对象,对象头中必须有一块数据记录数组长度,因为JVM无法从数组的元数据确定数组的大小。

    2.实例数据。
        实例数据是对象真正存储的有效信息,就是代码中定义的各种类型的字段内容,包括从父类继承下来的和子类中定义的。

    3.对齐填充
       HotSpot虚拟机的自动内存管理系统要求对象起始地址必须是8字节的整数倍。当对象的实例数据部分没有对齐,用对齐填充补全。所以对齐填充不是必然存在的。

    下一篇判断对象是否存活算法

    原文:https://blog.csdn.net/daniel_2046/article/details/80607471

  • 相关阅读:
    shell去重
    JDBC源码解析
    try catch finally
    URL
    域名与IP地址的联系与区别
    C++stack
    C++vector
    单链表常见面试题(C语言实现)
    数据库limit子句
    strcpy和memcpy的区别
  • 原文地址:https://www.cnblogs.com/wangfajun/p/9916109.html
Copyright © 2011-2022 走看看