一个Java对象到底有多大?

本文探讨了Java对象的内存结构,包括Object Header、Class Pointer和Fields,并通过示例详细计算了Integer对象和数组的内存占用。此外,提出了节约内存的四个原则:优先使用基本类型、慎重选择字段类型、合理使用数组和集合,以及一些内存优化的小技巧。
摘要由CSDN通过智能技术生成

编写Java代码的时候,大多数情况下,我们很少关注一个Java对象究竟有多大(占据多少内存),更多的是关注业务与逻辑,但是殊不知,在我们不经意间,大量的内存被无形地浪费了。

想要精确计算一个Java对象占用的内存,首先要了解Java对象的结构表示。

1.Java对象结构

一个Java对象在Heap(堆)的表示,可以分为三个部分:

Object Header(头信息)

Class Pointer(指针)

Fields(字段属性)

1.1 Object Header

每个普通Java对象在堆(Heap)中都有一个头信息(Object Header),头信息是必不可少的,记录着对象的状态和一些锁信息。

头信息在32位系统和64位系统占用空间不同,在32位中:

hash(25)+age(4)+lock(3)=32bit

64位中:byte

unused(25+1)+hash(31

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值