MMKV原理
通过 mmap 内存映射文件,提供一段可供随时写入的内存块,App 只管往里面写数据,由操作系统负责将内存回写到文件,不必担心 crash 导致数据丢失。
与传统的SharedPreferences实现方式不同,MMKV通过 mmap 内存映射文件来读写,下面先了解一下mmap 内存映射。
mmap 内存映射
要说mmap 内存映射的优势,要有比较才行,先说一说普通的文件操作。
常规文件操作
常规文件操作为了提高读写效率和保护磁盘,使用了页缓存机制。这样造成读文件时需要先将文件页从磁盘拷贝到页缓存中,由于页缓存处在内核空间,不能被用户进程直接寻址,所以还需要将页缓存中数据页再次拷贝到内存对应的用户空间中。这样,通过了两次数据拷贝过程,才能完成进程对文件内容的获取任务。写操作也是一样,待写入的buffer在内核空间不能直接访问,必须要先拷贝至内核空间对应的主存,再写回磁盘中(延迟写回),也是需要两次数据拷贝。
手绘示意图如下:
mmap原理
首先,“映射”这个词,就和数学课上说的“一一映射”是一个意思&