据我所知,布尔大小为 16 字节 {8 作为标头,1 有效负载,* 对齐到 8}
如果布尔变量是一个数组需要多少...
我的参考
你问的是Boolean
对象还是boolean
原语?对象的大小可能是 16 个字节(尽管可能取决于实现),而boolean
可能会消耗 4 个字节(int
隐式使用)。
因此boolean[]
将消耗N * 4
字节(N
数组的大小在哪里)+一些对象头。Boolean[]
将消耗N * 16
+ 标头(根据您对Boolean
大小的假设。
话虽这么说,请考虑编写自己的类数组类并将 32 个布尔值打包成一个int
(您必须手动编写一些位操作),就像BitSet
类正在做的那样。
数组对象大小将为:8 + 4 = 12 字节(这里 4 是数组的长度)如果数组长度为 N,则布尔元素将为:N*16 字节因此大小为:(12 + N * 16 ) 字节四舍五入 (ceil) 8
举个例子:如果N = 10,那么12 + 10 * 16 = 172,经过JVM四舍五入后,大小为176字节。