空间占用

空间占用表

  • 基于 SUM Hotspot JVM分析

  • 基于32位

类型

字节

int\float

4 bytes

32 bit

char\short

2 bytes

16 bit

boolean\byte

1 bytes

8 bit

reference

4 bytes

32 bit

double\long

8 bytes

64 bit

header

8 bytes

64 bit

示例

public class A {   
    byte a;   
    char b;   
    int c;   
    long d;   
    Object e;   
}

属性

需要字节数

累计字节数

header

8

8

long:d

8

16

int:c

4

20

char:b

2

22

byte:a

1

23

Object:e

4

27

padding

5

32

  • 最后一行padding 5bytes的目的是,规则一中描述每个对象按照8个字节的粒度对齐,这样下一个分配的对象的开始位置必须在8的倍数上,而离27最近的8的倍数是32,因此加了5bytes。A占用32bytes

    可以用jmap看一下这个计算是否准确

换算表

1 byte

8 bit

1 Kb

1024 byte

1 Mb

1024 Kb

1 Gb

1024 Mb

1 Tb

1024 Gb

1 Pb

1024 Tb

1 Eb

1024 Pb

Last updated

Was this helpful?