进行PAGE的数据填写的过程中,有空洞的存在,最大限度利用空间,如何减少空洞?
解决的方式,使用多个PAGE进行最优匹配,当数据页到数据水线的情况下,将剩余空间最小的释放;
具体的流程:
1、在正在填充的PAGE中,比较空间减掉目前数据长度后,剩余空间最小的,定位其序号,然后将数据填充到里面;
2、然后判断是否有到水线,没有到,继续等下一个数据的填充;
3、到水线的情况,将PAGE ID向后级处理发送;
4、极端的情况:有的PAGE有可能永远都没有机会到最小的空间,别的PAGEBUFFER始终有最小的,这样数据就没有办法推到后级处理,导致数据丢失在内存中,解决的方式就是进行切换,到达水线的情况下,最小的空间发一次,几次之后切换为发送最老的一块数据,使用计数,来一段数据,所有页都进行计数,符合条件的都到后级处理,计数最大的就是最老的。将计数最大的在这个机会点推到后级处理,然后再切换为发最小剩余空间的方式。
第四步情况往往容易被忽略。