lrucacheleetcode-learn_leveldb:leveldb源码注释

时间:2024-07-19 17:18:07
【文件属性】:

文件名称:lrucacheleetcode-learn_leveldb:leveldb源码注释

文件大小:391KB

文件格式:ZIP

更新时间:2024-07-19 17:18:07

系统开源

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


网友评论