为什么 boolean 存储需要 32bit?
计算机分配的最小单元必须为 1 字节(8 bit),理论上 boolean 只需要 1 bit,不过在 java 中分配了 32 bit。 这是为什么呢?
实际上呢是因为 CPU 内部有储存能力,分为三级缓存,它是由基准单位的,缓存是由一个个小单位组成的,这个小单位就叫缓存行(一个缓存行能存 64 字节的数据),CPU 中的中央处理器(逻辑运算单元)通过导线在缓存行中拿数据。计算机内部所有零件之间传输数据都是靠高低电压来传输的,高电压为 1,低电压是 0。
如图,CPU 在缓存行中拿数据的时候,每次只能拿取一个,由此可想到。如果这个缓存行中存的数据很多,但是每一个缓存数据的内容却很少,这就会大大的浪费时间,假若像图中所画,一个数据占了一大半的内存,这样发送数据的话,就会一次性发出了一大半的数据,性能将会大幅提升。所以 Boolean 设为 32 bit,被阻挡的概率就会降低,平均读取的时间就会加快。
版权声明: 本文为 InfoQ 作者【Geek_10c5db】的原创文章。
原文链接:【http://xie.infoq.cn/article/c72688069a1ae3537f9cc175e】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论