给定一个具体的类,请分析对象的内存占用?
Java
官方
推荐
1 public class MyOrder{
2 private long orderId;
3 private long userId;
4 private byte state;
5 private long createMillis;
6 }
一般来说,MyOrder 类的每个对象会占用40个字节。
怎么计算出来的?
计算方式为:
对象头占用12字节。
每个long类型的字段占用8字节,3个long字段占用24字节。
byte 字段占用1个字节。
以上合计 37字节,加上以8字节对齐,则实际占用40个字节。
对象头中包含哪些部分?
对象头中一般包含两个部分:
标记字,占用一个机器字,也就是8字节。
类型指针,占用一个机器字,也就是8个字节。
如果堆内存小于32GB,JVM默认会开启指针压缩,则只占用4个字节。
所以前面的计算中,对象头占用12字节。
如果是数组,对象头中还会多出一个部分:
数组长度, int值,占用4字节。