空间占用
空间占用表
基于 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?