Isa*_*lor 2 java memory arrays memory-management boolean
在Oracle网站上,它表示bool在堆栈上占32位,但在阵列中占8位.我很难理解为什么他们会在一个小组中比在单打中少花钱.它们是如何存储的,它有什么区别?如果bool阵列效率更高,为什么这项技术没有被转移到单身?
另外,为什么不是1位?
64而系统和32位系统如何存储这些有什么区别?
谢谢!
布尔值可以存储为单个二进制数字,但我们的计算机将值组合为方便.实际处理的最小单位是一个字节,下一个最大的单词是一个字.在现代硬件中,字节总是8位.32位已经成为一个单词的标准.甚至我们的64位计算机也可以有效地处理32位字.将bool存储在任何自然单元中比单个位更方便.在数组中,自然单位将是一个字节,因为您可以寻址内存中的任何字节.在堆栈上,这是一个文字堆栈,自然单位是一个单词.你可以把bool变成字节和单词,然后逐字逐句地将它们拉出来,但这比用字节或单词存储它们效率低,因为现代存储器很大,因此CPU速度更受关注.你不会浪费所有的时间来紧凑地打包,所以我们浪费了内存,因为它更容易消耗.