数组存储压缩原理(自己理解)

本文探讨了Java数组存储方式的演变,从早期的低效分配到现在的压缩存储技术,极大提升了内存利用率。通过链接基本类型,Java能更有效地利用内存块,减少了内存浪费。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以前的数组存储形式

内存是分块的,每一块内存占4KB的空间,一个int型的变量所占内存为4B,即一个块理论上可以存储1024个int

然而在java改版之前,当声明一个包含N个数的基本类型的数组时,java会在内存中开辟N个内存块,在每个块中只存储了一个基本类型的数据,造成的内存的大量浪费

在这里插入图片描述

现在的数组压缩存储方式

java对上述的浪费进行了更新,在存储基本类型的数组时,java内部会把数组中的基本类型链接起来,使得现在一个内存块可以基本完全利用,
当读取此数组中的数据时,java会按照每个块中存储的某种数据类型的个数及一个此数据类型所占内存查找(java会计算这种数据类型在一个内存块中最多有多少个,并按要查找的数据所在的内存块中的个数查找位置)
例如,一个int类型的数组arr,当读取 arr[358] 时,因为一个int占4B,即 arr[358] 在内存块中的位置为: 358 * 4 + 1
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值