在Java中,字符数据类型char
用2个字节表示。 n
个字符char[]
数组用2n+24
个字节表示。
通常,存储24
个字节的开销用于存储n
个对象的数组(至少如果对象是基本类型的话)。
为什么我们需要这些额外的24个字节?他们是如何使用的?
编辑(2015年7月2日)。在评论中我注意到程序员StackExchange提供了这个问题的答案here
答案 0 :(得分:3)
它是对象头,它包含有关对象本身的信息(锁定位,GC的标记位),指向其类对象的指针和长度。
答案 1 :(得分:2)
除了对象头和长度前缀之外,所有java对象也必须对齐,通常是指针大小,可能是其倍数(可以选择调整对象对齐)。
对齐的必要性意味着如果后续对象不能正确对齐,则必须有每个对象的填充结束 - 因此必须是数组。对于set_fact
数组,这种担忧最为突出。