数据类型 | 内存占用字节数 |
---|---|
byte | 1 |
short | 2 |
int | 4 |
long | 8 |
float | 4 |
double | 8 |
boolean | 1 |
char | 2 |
-
计算机访问内存时是一次一个字节
其中每8位为一个字节
1011 1101 1111 0000 (前8位一个字节,后8位一个字节)
-
一个应用(机器地址)需要8个字节表示
创建一个对象,那么这个对象需要占用8个字节表示
-
当创建一个对象时,如new Object(),除了Object对象内部储存的数据占用的内存
该对象本身也有内存开销,每个对象的自身开销是16个字节,用来保存对象的头信息。
-
一般内存的使用,如果不够8个字节,都会被自动填充为8个字节
public class Demo{ public int num = 1; }
通过new Demo()创建一个对象的内存占用如下:
- 整型成员变量num占用4个字节;
- 对象本身占用16个字节;
那么创建该对象总共需要20个字节,但由于不是以8为单位,会自动填充为24个字节
-
java中数组被限定为对象,他们一般都会因为记录长度而需要额外的内存,一个原始数组类型的数据一般需要24字节的头信息(16个字节对象开销,4字节用于保存长度以及4个填充字节),再加上保存值所需的内存。