假设我在一台64位机器上用gcc编译C程序。我假设sizeof(int)为8字节,sizeof(char)为1字节。
由于内存对齐的原因,以下结构体:
由于内存对齐的原因,以下结构体:
struct example{
int a;
char c;
}
实际上,以下这个类的大小不是9个字节,而是16个字节(等于两个 sizeof(int)
),因此它的开始和结束地址都可以是字长的倍数(这里假设字长为8个字节)。
我想知道在Java 8中以下类的大小是多少:
class Node {
int val;
Node left, right;
boolean flag;
}
我不确定我们是否需要按8或4字节的倍数对齐。
java -cp "jol-cli-0.9-full.jar:." org.openjdk.jol.Main internals package.ClassUnderTest
创建了可比较的表格。但是,结果让我有些困惑:上面显示它在64位机器/jvm上执行。类似乎对齐到字大小(8个字节)。原始类型根本没有对齐。而引用则对齐到半字(4个字节)。这是真的吗? - steve