lrucacheleetcode-learn_leveldb:leveldb源码注释

时间:2021-06-29 23:31:27
【文件属性】:
文件名称:lrucacheleetcode-learn_leveldb:leveldb源码注释
文件大小:391KB
文件格式:ZIP
更新时间:2021-06-29 23:31:27
系统开源 lru cache leetcode 源码笔记 线程安全性分析: emplace_back可以避免使用参数构造对象时额外的构造操作,直接原地通过参数构造对象,如果是push_back,需要调用构造函数构造临时对象,再调用移动构造函数构造对象. PosixWritableFile使用写缓冲区,写缓冲区积累写入操作,直到缓冲区满才进行一次批处理写入,减少写操作的调用次数,如果写入数据过大就才循环写入。 leveldb arena leveldb arena减少了内存malloc的次数,小的内存申请一般分配一次block可以用很长时间,剩余空间不够就丢弃剩余空间再重新分配一个block.所以为了减少block剩余空间的浪费,将过大的内存申请单独分配空间(和缓冲写文件的思想有点类似,减少了syscall调用的次数) 在LevelDB里面为了防止skiplist大量多次内存分配导致的碎片,采用了自己写的一套内存分配管理器。名称为Arena。 但是需要注意的是,这个内存分配器并不是为整个LevelDB项目考虑的。主要是为skiplist也就是memtable服务。 skiplist里面记录的是用户

网友评论