一个HashMap对象占多少字节?.docxVIP

  • 48
  • 0
  • 约2.89千字
  • 约 10页
  • 2021-11-15 发布于湖南
  • 举报
一个HashMap对象占多少字节? 2021-11-18 对象=对象头+成员变量+对齐填充 对象头结构:java对象在Heap里面的结构是这样的:对象头跟对象体,对象体跟C里面的结构体是一样的,对象头由两个域组成:用于存放hashcode、同步、GC的_mask域,和指向方法区该对象Class对象的指针——_klass域,对于64位系统,头部长度理论上讲应当是8+8=16字节。但是从java6u23以后开头,64位的机器会自动开启指针压缩的功能,此时引用指针的长度为4字节。所以,对象头长度应当为8+4=12。 成员变量:分两类,包括一些基本类型,如int,long.byte,short,boolean等,以及引用类型,如String,Date引用。假如是引用类型,也应当把引用类型指向的对象纳入当前对象。 对齐填充:JVM规定,对象的大小必需是8字节的整数倍,假如不足,则会补齐。 此外,对于数组,还会有一个标示数组长度的字段。其实数组也是一品种,会在后文中引见。 以此为理论基础,我们来计算一下常用的对象占用空间大小。 Integer 类结构图:可以看到,只要一个私有的int型数据 所以Integer长度为:头(8+4)+ int(4) = 16字节 Long 类结构图 类似于Integer,只要一个long型的私有成员。 所以总长度为:头(8+4)+long(8)+pa

文档评论(0)

1亿VIP精品文档

相关文档