我们用4g磁盘做例子讲解
我们磁盘的分配单元大小一般是4kb
一个数据块只能有一个数据单位
比如:一个数据块只能有一个int类型的数据
那么4g得磁盘大约就有100w+的数据块
而java虚拟机占用大约是50w块
假设如果我们用一个数组
int [] a = new int[10000000]
比如这个有1000w个 int类型的数组
int类型占4b
如果不进行数据压缩的存储方式那么对于这个数组虚拟机的50w空间是远远不够的
所以要进行数据压缩 压缩的数据都属于一个变量
为什么能压缩呢因为都是将数组a当作一个整体变量使用
在一个数据块中可以存多个int类型的数据
这样以来我们再来计算一下 一个数据块4kb = 4096b
意为着一个数据块不再只能存一个数据而是可以存1024个int类型数据
总共可存50e+的int所以这就是数据压缩,而数据压缩的底层就是用buffer流
的形式实现的
因此最终数据压缩后全变成buffer类型