MIUI9快如闪电,miui9怎样快如闪电( 二 )


MIUI9快如闪电,miui9怎样快如闪电

文章插图
因为“Fuse”虚拟文件系统和“EXT4”底层之间频繁的数据读写会对应用启动速度产生影响 。根据Google在Pixel上的测试数据,通过“Fuse”虚拟文件系统随机写的速度损耗达30%-50%,而SDcardfs损耗则可以控制在5%以内 , 另外“Fuse”随机读取数据的速度损耗达到90%以上 , SDcardfs可以控制在20%以内 。这正是这种巨大的读写速度提升,最终呈现给用户的是App应用相应速度的大幅提升 。
MIUI 9系统采用全新的SDcardfs文件系统后——这是最新一代Android O/Android 8.0采用的技术,代表着安卓系统未来的发展方向——应用启动速度有明显的提升 。比如在小米内部测试中 , 游戏《阴阳师》在小米6上的启动速度由9秒迅速缩减至5秒左右,效果非常明显 。
3、内存实时反碎片
内存实时反碎片也是MIUI9一项黑科技 。那么什么是手机的内存碎片?举一个通俗的例子:如果我们把手机内存看作一个记事本 , 数据读写看作在本子上写入内容 。随着手机启动 , 各种应用以及系统数据会不断写入内存中 , 这时候会出现记事本上某一页纸上没有写入内容(“一页纸”在内存中的单位是4kb),而前后两页均被使用的情况,这时我们可以把这页没有使用的“纸张”看作一个内存碎片——对于一台4GB运行内存(RAM)的手机来说 , 这类碎片可能是几千个 。
随着手机使用时间增长,手机内存中有可能会出现大量不连续的内存碎片,当有些数据的读写需要使用连续内存页时,虽然手机此时还有内存,但由于它是不连续的,从而导致应用数据无法读写 。针对这个状况,安卓原生系统其实做了不少工作,它通过内存回收的方式“腾出”可以满足当前需求的连续内存页 。
但遇到多任务切换或系统资源调用时,刚腾出来的A内存,如果此时你去做B操作,A内存数据已经被回收了;当你从B操作切回到A时,系统需要重新去找满足A的连续内存页并写入数据……如此反复倒腾,会加速了手机I/O硬件损耗,并且对系统流畅性大打折扣 。
MIUI 9采用内存实时反碎片技术 , 通过复杂的算法来判断内存碎片是否可以被移动和整理,最大程度保证系统内存的实时连续性,以应对随时可能出现的连续内存数据读写需求,从而减少因为内存的不连续性导致的频繁回收和重写,让系统的内存读写时刻处于最佳状态,实现流畅运行 。
MIUI9快如闪电,miui9怎样快如闪电

文章插图
4、文件系统缓存管理
和内存实时反碎片功能有所关联的是文件系统缓存管理技术 。在手机打开存储空间里的一个视频或者图片时,手机系统需要先将文件数据写入系统内存,再通过读取系统内存数据将文件展示到用户眼前 。
前面我们提到了当系统连续内存数据不满足当前操作所需时,会进行内存回收释放,这就可能导致部分热点文件的数据被频繁的回收和读取 。
MIUI9文件系统缓存管理就是通过系统算法判断热点文件所使用的系统缓存,对它们加以保护,防止出现因为内存回收导致的数据反复读取现象 。
5、核心组件拥塞控制
由于文章篇幅所限,最后再向大家介绍一个MIUI9黑科技——核心组件拥塞控制 。
一般来讲,手机系统核心组件包括“广播”、“服务”、“界面”和“读取数据库”四大组件,每一个应用都包含了这四个组件 。例如高德地图的发push消息(广播) , 在导航时告诉手机系统不要熄屏(服务),APP的操作界面(界面),在多任务后台停留(读取数据库)等等行为,都是通过“组件”来实现的 。可以说所有APP在手机里的存在,都是表现为“组件的行为” 。
【MIUI9快如闪电,miui9怎样快如闪电】不同APP组件之间存在资源的竞争关系,比如各个应用都需要读取数据库,但系统一次只会允许一个应用的系统组件读取,其他应用的“组件行为”就需要排队等候 。
为了能够让自己的系统组件得到快速响应,某些应用会采取一些非常规手段进行插队,这就可能导致其他应用的组件需求无法得到及时满足,从而导致系统出现卡顿、耗电等情况 。
对此MIUI 9引入核心组件拥塞控制技术,当发现一些非常规组件频繁发起响应请求 , 长时间占用CPU、内存等硬件资源时,系统会对其行为进行判断 , 如果不是紧急需求,便会降低该应用的优先权,比如限制其最大可用CPU资源,从而保证其他的系统组件获得足够的硬件资源支持 。


推荐阅读