【发布时间】:2015-08-27 13:30:59
【问题描述】:
谁能让我理解java中的“对象头”和“填充”这个词?
class A{
int a;
}
这里会有什么“对象头”和“填充”?
【问题讨论】:
谁能让我理解java中的“对象头”和“填充”这个词?
class A{
int a;
}
这里会有什么“对象头”和“填充”?
【问题讨论】:
“填充”是Java中对象由于内存对齐而成为8的倍数的趋势:Why do Java objects have to be a multiple of 8?
Java 中的所有对象都包含一个带有一些额外开销信息的“对象头”(导致它们占用一点额外空间):What is in java object header
因此,在您的示例中,class A 的标头将占用空间以及保存其字段 int a 所需的空间。如果这两个值加起来不是 8 的倍数,则会向内存位置添加额外的空间,使其成为 8 的倍数,从而在内存中正确对齐。
【讨论】: