java 一个空对象占多少字节

2020-06-17  本文已影响0人  一方乌鸦

Object o = new Object():
在32位系统下:
java空对象占8个字节,对象的引用占4个字节。
所以上面那条语句所占的空间是4byte+8byte=12byte.
java中的内存是以8字节的倍数来分配的,所以分配的内存是16byte.
举个例子:

Class O {
  int i;
  byte j;
  String s;
}

其所占内存的大小是空对象(8)+int(4)+byte(1)+String引用(4)=17byte,因要是8的整数倍,所以其占大小为24byte.

为什么 java 对象按照8字节的倍数分配?

其目的是 数据对齐(alignment),它允许以一些空间为代价加快内存访问。如果数据未对齐,则处理器需要在加载内存后进行一些转换才能访问它。

此外,垃圾回收简化(并加快)最小分配单元的大小。

Java不需要8字节(64位系统除外),但由于32位体系结构是创建Java时的常态,因此Java标准中可能需要4字节对齐。

上一篇下一篇

猜你喜欢

热点阅读