一.在Android当中进行配置信息的保存,你第一时间会想到什么?
SP无论是commit 还是apply都会产生ANR。
二.什么是MMKV?
MMKV 是基于 mmap 内存映射的 key-value 组件,底层序列化/反序列化使用 protobuf 实现,性能高,稳定性强。从 2015 年中至今在微信上使用,其性能和稳定性经过了时间的验证。近期也已移植到 Android / macOS / Windows 平台,一并开源。
三.SharedPreference特点?
1.读写方式:直接I/O
2.数据格式:xml
3.写入方式:全量更新
四.MMAP
Linux通过将一个虚拟内存区域与一个磁盘上的对象关联起来,以初始化这个虚拟内存区域的内容,这个过程称为内存映射(memory mapping)。
五.MMAP优势
1.mmap防止数据丢失,提高读写效率:MMAP对文件的读写操作只需要从磁盘到用户主存的一次数据拷贝过程,减少了数据的拷贝次数,提高了文件读写效率。
2.MMAP使用逻辑内存对磁盘文件进行映射,操作内存就相当于操作文件,不需要开启线程,操作MMAP的速度和操作内存的速度一样快;
3.MMAP提供一段可供随时写入的内存块,App 只管往里面写数据,由操作系统如内存不足、进程退出等时候负责将内存回写到文件,不必担心 crash 导致数据丢失。
六.MMKV三大优势
1.mmap防止数据丢失,提高读写效率;
2.精简数据,以最少的数据量表示最多的信息,减少数据大小;
3.增量更新,避免每次进行相对增量来说大数据量的全量写入:
不管key是否重复,直接将数据追加在前数据后。
七.MMKV扩容
扩容非常简单,只需要重新设定文件大小,然后重新mmap映射即可