先用bitmap来标记哪些field存在,每个field只占1bit,按1000个field来算只需要125个字节的开销,然后存在的field记录偏移,每个偏移4个字节。还可以采用inline value的方式进一步优化空间,低于4字节的field可以将value直接记录在偏移字段,不需要额外的偏移存储。
按照现在的物料数据进行测试:===>新数据格式空间大小=>inline优化后的空间大小(inline优化比率) 从数据可以看出,能够将单条物料控制在5K大小,inline的能够平均优化5%空间,1000万物料大概50G内存。
package com.weibo.hotwb.inspect;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.ArrayList;