• java对象大小计算方法及内存布局


    1 对象的内存布局

    java对象在内存中主要是有:对象头、对象体、padding 3部分组成
    image

    1.1 对象头

    Mark Word 用于存储对象的运行时信息。如哈希码、GC分代年龄、锁状态、偏向线程ID、偏向时间戳等。
    字段长度。32 位机: 32位; 64位机:64位

    Klass Pointer 指向对象对应的Class对象的内存地址
    字段长度。32 位机: 32位; 64位机:64位,8字节,如果启用指针压缩则为4字节。

    数组对象长度 如果对象是数组,需要保存数组长度的字段。字段长度:4字节

    1.2 对象体

    对象体中包含各类数据类型。数据类型分为基本数据类型、引用数据类型

    • 基本数据类型长度
    类型 大小(Bytes)
    boolean 1
    byte 1
    short 2
    char 2
    int 4
    float 4
    long 8
    double 8
    • 引用数据类型

    字段长度:32 位机中占 4字节, 64位机中占 8字节。

    1.3 Padding

    由于hotspot虚拟机的自动内存管理系统要求对象起始地址必须是 8 字节的整数倍,因此任何对象大小必须是 8字节的整数倍。

    参考文献

  • 相关阅读:
    MapReduce 运行流程概要
    HDFS 读写流程概要
    Hadoop源码分析22:dfsclient概要
    Hadoop源码分析22:dfsclient概要
    Matlab安装SVM/RF工具箱的办法
    最大似然估计、最大后验概率估计、贝叶斯公式的理解
    车牌识别
    BP神经网络
    SVM中核函数的理解
    数据库面试
  • 原文地址:https://www.cnblogs.com/zhaopengcheng/p/16498013.html
Copyright © 2020-2023  润新知