华为扩大内存代码

您所在的位置:网站首页 荣耀手机扩大内存代码 华为扩大内存代码

华为扩大内存代码

2024-07-14 06:09| 来源: 网络整理| 查看: 265

2c1f2dc27bb8a7d5a7ee22573544d729.png

4月11日,在华为P30发布会上,全新的EMUI9.1系统随P30一起上线,并面向华为、荣耀的多款机型提供公测,相信不久即将正式全面推送。相比EMUI9.0以及其他安卓手机厂商的系统,EMUI9.1通过两大革命性创新——EROFS超级文件系统和方舟编译器,真正实现从系统底层提升运行速度,让安卓彻底摆脱“一年卡成狗”的帽子。

文件管理系统影响系统运行速度

手机操作系统的运行速度由硬件和软件两部分决定。随着手机CPU主频高达2.0G赫兹以上,RAM动辄达到6G甚至8G,硬件已经不再是阻碍手机操作系统运行速度的关键要素。

因此,更好地优化软件,可以带来系统速度的大幅提升,其中文件管理系统(简称文件系统)的创新和优化至关重要。文件系统负责为用户建立文件,存入、读出、修改、转储等,它在控制文件的存取,也决定了手机操作系统的速度。

在基于Linux开发的安卓操作系统中,最早使用的是Linux的标准文件系统——Ext4。由于Linux此前大多都在机械硬盘上运行,因此Ext4的存储结构也同样更适用于机械硬盘。而手机的存储介质都是Flash闪存。

2012年,“Flash Friendly File System”(简称F2FS)文件系统出现了,它特意针对Flash开发。但是其稳定性一直不佳,所以很长时间内都未被大规模使用。直到2016年华为发布Mate9,才第一次将优化后的F2FS文件系统应用在EMUI5.0上,将安卓操作系统的整体运行速度提升了20%。

但是F2FS仅针对的是手机中的用户分区,就像是电脑的D盘。而对于运行操作系统只读文件的系统盘(相当于电脑的C盘)却并不支持,系统盘的文件系统仍然用的是EXT4。

cd1867df875dbd40f7a177ee0524eda1.png

2018年6月,华为再次发布一款全新的针对Linux只读文件的文件系统——EROFS(超级文件系统),这个全新的文件管理系统具有压缩率越高,运行效率越高的优势。

在华为实验室发布的实测数据中显示,当文件压缩率为4%(即100MB文件压缩为4MB)时,提升高达172%。直到2019年华为发布P30的时候,经过多次优化的EROFS被用在全新的EMUI9.1上。这也让P30在执行系统文件的时候,做到4%的压缩率,读取性能比此前的文件系统提升300%。

同时,还为手机释放出2G的存储空间,可以用来存储更多的照片、视频、歌曲和文件。

由于EROFS有着更高的压缩率,在整个手机使用的生命周期中,即使多次获得厂商推送的升级包,也不会导致RAM被大幅占用的窘境。

更高的压缩率,更高效的读取速度,这让EROFS成为迄今为止手机操作系统随机读取速度最快的文件系统,它彻底替代了Ext4。

从搭载EMUI9.1的P30实测看,手机系统的流畅度、APP打开的速度都得到了极大的提升,完全可以媲美搭载iOS12的iPhone XS Max。

编译机制影响了APP的运行速度

对比以往的安卓手机和iPhone,总是能发现应用启动速度存在着或多或少的差异。这很大程度上是由两者编译器的工作原理不同导致的。

“编译器”在操作系统中的作用是将程序员用高级语言编写的代码转换成机器能够读懂的机器语言。

之所以iOS的APP启动速度比安卓更快,与编译器的不同有很大的关系。iOS开发使用Object-C和Swift语言,两者的代码直接通过编译器(Clang + LLVM)生成机器码,机器码可以直接在CPU上执行。

ab9d6908fbf1d2340ccaf15480041365.png

而Android的应用使用的是Java语言编写,需要通过Java虚拟机运行才能将代码翻译成机器语言,这显然会耗费更多的时间。在Android4.4之前,谷歌采用的是Dalvik虚拟机。在Dalvik下,应用每次运行的时候,字节码都需要通过即时编译器(just in time ,JIT)转换为机器码,这会拖慢应用的运行效率。

f88f346e5b4dbced05be6daa1ceeb141.png

此后,谷歌通过ART虚拟机替换Davlik。ART是一个AOT编译器,所谓AOT (Ahead of Time)是指在运行以前就把字节码静态编译成二进制机器码,相比JIT 能够提高执行效率。ART的缺点是仍然没有摆脱Java虚拟机机制,对应用的编译执行效率仍未发挥到极致。而且机器码占用的存储空间更大,字节码变为机器码之后,可能会增加10%-20%,应用安装时间过长。而且内存回收机制的效率也并不高。

d2634d3a322dcf2c7093eebfc1f64358.png

华为最新发布的EMUI9.1系统所采用的“方舟编译器”与谷歌ART一样,也是基于AOT编译器打造的。但是方舟编译器完全摆脱了Java虚拟机机制,采用静态编译技术,把所有的高级语言字节码都提前编译为二进制代码,直接让CPU运行。

同时,方舟编译器采用类似iOS的RC引用计数法内存回收机制,区别于安卓普遍采用的GC内存回收机制。RC引用计数算法回收内存的工作原理是:实时判断应用对象的引用计数,当为0时,对象会执行反初始化方法并被回收。如果两个对象互相引用对方,就会造成循环强引用,导致内存泄漏。

而GC的工作原理则是:根搜索算法回收内存。该算法通过GC Roots作为起点搜索,搜索通过的路径称为引用链,当一个对象没有被GC Roots的引用链连接的时候,这个对象就会被回收。即使A和B两个对象互相引用对方,只要A和B都不在引用链上,这两个对象都会被回收。

27b512000b4f96edaca0dbeebb8c53de.png

显然,RC回收机制更科学,它可以实时的判断对象的状态,实时进行内存回收。而GC则是每次都从起点搜索,更像是一种集中化的操作,效率低于RC,这也是造成手机卡顿的重要原因。

在P30上,通过方舟编译器开发的微博极速版,相比此前的速度提升了60%。这充分证明了全新的方舟编译器对APP启动、运行效率的高效提升。

超级文件管理器、方舟编译器作为安卓底层的革新功能,需要更多开发者采用才能真正实现优化系统和应用的目标,所以华为将超级文件系统、方舟编译器都采取了开源的方式,让更多开发者用起来,最终实现安卓的整体体验优化。

随着这两大技术的开源,相信不仅华为旗下的安卓手机可以摆脱卡顿的阴影,或许整个国内安卓生态下都可以扔掉“一年卡成狗”的帽子,让我们拭目以待吧!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3