要想搞清楚实例对象占用多少空间,首先需要知道Java的数据类型。
Java数据类型分为引用数据类型和基本数据类型。
引用数据类型是由引用变量(refvar)和指向的实际对象两部分组成的。
引用变量是基本数据类型,存放的是引用指向实际对象的内存地址,实际对象存放在堆中。
这也解释了为什么说Java方法的参数传递只有值传递了,因为传递的只是把指向对象的内存地址赋值给了方法参数中的局部引用变量,与C++的引用传递并不相同。
9种基本数据类型
类型 | 大小 |
---|---|
boolean | 1B |
byte | 1B |
char | 2B |
short | 2B |
int | 4B |
long | 8B |
float | 4B |
double | 8B |
refvar | 4B |
为什么boolean类型是1B而不是1bit呢?