数组存储压缩原理
以前的数组存储形式
内存是分块的,每一块内存占4KB的空间,一个int型的变量所占内存为4B,即一个块理论上可以存储1024个int
然而在java改版之前,当声明一个包含N个数的基本类型的数组时,java会在内存中开辟N个内存块,在每个块中只存储了一个基本类型的数据,造成的内存的大量浪费
现在的数组压缩存储方式
java对上述的浪费进行了更新,在存储基本类型的数组时,java内部会把数组中的基本类型链接起来,使得现在一个内存块可以基本完全利用,
当读取此数组中的数据时,java会按照每个块中存储的某种数据类型的个数及一个此数据类型所占内存查找(java会计算这种数据类型在一个内存块中最多有多少个,并按要查找的数据所在的内存块中的个数查找位置)
例如,一个int类型的数组arr,当读取 arr[358] 时,因为一个int占4B,即 arr[358] 在内存块中的位置为: 358 * 4 + 1