小米MIUI的原子記憶體機制是如何實現的

小米MIX 4上在硬體層面上採用了多項“黑科技”,而作為系統軟體MIUI,雖然沒有新功能釋出,卻在軟硬體結合方面讓人耳目一新。原子記憶體機制是小米產品總監、MIUI體驗總負責人金凡在介紹MIUI12。5增強版時重點提到了一項功能最佳化。

小米MIUI的原子記憶體機制是如何實現的

小米MIUI的原子記憶體機制是如何實現的

透過原子記憶體機制,MIUI12。5增強版可以實現超精細記憶體管理,拆分應用記憶體,優先結束不重要任務,而不是暴力的程式強退,讓系統記憶體得到更精細的應用。

你不禁會問這真的是“黑科技”嗎?或者這樣的“黑科技”是如何實現的?

在底層系統搭建上,原生Android選擇了分層的結構,分別是應用層、應用框架層、系統執行庫層、硬體抽象層和Linux核心層。

在這五層中,應用層負責互動;應用框架層用於應用程式開發;系統執行庫層負責應用下載到本地並支援多應用並行;硬體抽象層負責抽象化硬體並控制硬體;Linux核心層上面有面向安卓專門的驅動。

搞清楚這樣的分層結構,小米MIUI改動的地方應該是較為明確了——小米在系統執行庫層和硬體抽象層進行了最佳化。

原生Android的系統執行庫層還有細分,一部分是C/C++程式庫,這部分主要是提供基本的效能支援,比如3D繪圖函式庫OpenGL ES,輕型的關係型資料庫引擎SQLite和底層的2D圖形渲染引擎SGL等。這部分需要特別提一下SQLite,從金凡的描述來看,原子記憶體機制能夠對應用程式程序進行優先順序排序和刪除,因此應該有在SQLite的工作方式進行調整,讓應用程序的記錄方式滿足原子記憶體機制的工作原理,且金凡提到的單程序刪除和程式瘦身,也需要在資料庫上做文章。

系統執行庫層的另一部分是執行時庫,是一種被編譯器用來實現程式語言內建函式,以提供該語言程式執行時支援的一種特殊的計算機程式庫。這部分重要的作用是提供最基本的執行時需要。小米MIUI的原子記憶體機制是一種特殊的程序執行,系統執行庫層原本是支援多應用程式並行的,但支援數量有限,因此小米MIUI就需要定製化的執行支援,在這部分加以調整和最佳化。

硬體抽象層讓系統能夠在核心空間編寫硬體驅動程式,新增介面支援訪問硬體,實現透過Java介面來訪問硬體。透過金凡的描述不難發現,原生Android的硬體抽象層實現的硬體驅動應該是以塊的方式設定的,每一個應用程式都是一個塊,所有該應用程式的程序都在這個塊中,當系統記憶體無法運轉最新開啟的應用程式時,按照時間排序,時間較早開啟的應用程式就需要強退,並在下一次開啟時重新載入。

小米MIUI的原子記憶體機制從概念上就可以看出,他們改變了程式的驅動方式,讓每一個應用程式不再以完整體的方式存在於記憶體中,而是進行了多維度的切割,包括執行緒的分解以及應用程式載入包外套的壓縮功能。進而實現,執行緒上面是可以獨立加入和刪除的,且應用程式本身在必要的時候能夠進一步進行壓縮,讓記憶體中能夠容納更多的應用程式。

透過與競品安卓旗艦機型的對比,當共同開啟10個應用程式之後,搭載小米MIUI12。5增強版的機型能夠讓所有應用都駐留在後臺,而競品安卓旗艦機型駐留應用程式的數量是3個,其他程式均被後臺“殺掉”。

然而,從目前小米嚐鮮使用者的反饋來看,小米MIUI12。5 增強版的表現還不是很穩定,有網友在小米社群反饋即便使用了小米MIUI12。5 增強版內測版本,殺後臺情況依然存在。