1.常量与变量的定义

1.1. 常量定义部分:

定义的常量 数值 注释 含义
VALSTART 0 val offset in acct value的地址(kvi+VALSTART)
KEYSTART 1 key offset in acct key的地址(kvi+KEYSTART)
PARTITION 2 partition offset in acct partition的地址(kvi+PARTITION)
VALLEN 3 length of value value的长度(kvi+VALLEN)
NMETA 4 num meta ints 元数据的数量
METASIZE 16 size in bytes 一个元数据块包括四个int类型的元数据,大小为16个字节

1.2. 变量定义部分:

定义的变量 注释 含义
环形缓冲区
byte[] kvbuffer main output buffer 环形缓冲区数组
int bufferRemaining / 溢写阈值内的缓冲区剩余空间
int spiller / 溢写的百分比
int softLimit / 进行溢写阈值(spiller*kvbuffer.length)
元数据
IntBuffer kvmeta metadata overlay on backing store 键值对的元数据
int kvstart marks origin of spill metadata 指向元数据块中的第一份元数据
int kvend marks end of spill metadata 指向元数据块中的最后一块元数据
int kvindex marks end of fully serialized records 指向下次写入元数据的地址
键值对
int equator marks origin of meta/serialization 元数据与键值对的分界线
int bufstart marks beginning of spill 键值对开始的地址(溢写开始的地址)
int bufend marks beginning of collectable 键值对结束的地址(溢写结束,收集开始的地址)
int bufmark marks end of record 当前键值对的结束地址
int bufindex marks end of collected 下一份kv数据对的写入地址
int bufvoid marks the point where we should stop reading at the end of the buffer 写出数据的截至地址
kvbuffer.length

2. 示意图

image.png