安卓|我把內存擴展到32G后,發現事情沒這么簡單( 二 )


果子翻出自己的老古董紅米1s依舊可以正常運行 。
在那個普遍硬件性能不高的年代 , 利用內存擴展軟件 , 提升了一大批手機的應用體驗 , 殺后臺 , 掛不住應用的狀況有所緩解 。
內存擴展原理
但是 , 內存擴展依舊是有局限性的 。
其實現原理即為在本地分配交換分區后 , 生成一個對應大小的swap文件 , 所占用的存儲區域就被稱為虛擬內存 。
在設備使用過程中 , 依舊會優先使用真實內存 , 當內存不足時 , 系統就自動釋放不常用的應用 , 并將其保存在 swap 空間中 。
當用戶切回應用時 , 系統自動從 swap 空間讀取數據 , 再恢復到真實內存中 , 最終實現交換 。
簡單的來講 , 正因為交換分區的存在 , 虛擬內存并不是越大越好 。
如同文章開始所展示的 , 果子已經在 /data/ 目錄下創建了 20G 的虛擬內存 , 通過檢測工具測試可正常加載使用 。
但是在真實使用下表現如何呢?
在打開一波應用后 , 我們發現 , 即使手機物理內存占用高達近 80%, 交換分區的虛擬內存依舊處于較低的占用 。
因此 , 這里就不得出提出另一個關于虛擬內存調度的概念swappiness。
簡單的來講 , swappiness 的數值對應使用虛擬內存的權重 , 該數值越大 , 系統就會越積極的使用虛擬內存 。
有人可能會說:那直接調整到最積極 , 不就能多使用虛擬內存了?但事實并非這么簡單 。
首先 , 就是速度問題 , 由于使用存儲作為內存 , 即使今天的UFS閃存芯片 , 其I/O 性能依舊不如物理內存 。
其次 , 由于 swap 交換分區的特性 , 不可能隨時優先使用虛擬內存 。
并且 swappiness 值過大 , 會導致后臺進程頻繁回收釋放 , 并載入存儲的情況 。 (下文會詳細解釋)
優劣總結
優點:
對于目前的主流設備而言 , 適量的內存擴展 , 確實可以提升后臺能力 , 提升使用體驗 。
目前各家的定制系統 , 由于動畫、動態渲染等視覺效果會占據更多的資源 。 并且 , 目前許多品牌為了極致的性價比 , 依舊使用 6G 內存 。
因此 , 低內存設備的體驗確實不能讓人滿意 , 而現在引入內存擴展 , 可緩解這些問題 。
缺點:
目前 , 虛擬內存讀寫性能不如物理內存 , 很容易出現切換應用后 , 停頓一下才加載出來的情況 , 造成體驗的割裂感 。
而且 , 如果想提升手機的后臺能力 , 就需要使用更大的虛擬內存權重 。
這就越容易出現后臺應用頻繁回收資源到存儲空間 , 而上述的卡頓會越發嚴重 。
并且 , 虛擬內存并不是越大越好 , 占額外空間就不說了 。 許多時候殺后臺并不是內存不夠用了 , 而是系統的內存策略問題(點名 MIUI ) 。
虛擬內存不管多大 , 能使用的都是都很有限的 , 果子就已經刪除了 20G 的虛擬內存 , 娛樂一下而已 。
還有一點:由于內存的特性 , 長時間都會處于讀寫狀態 。 因此 , 會一定程度減少閃存(存儲空間)的壽命 。
不過這個大家不用過于擔心 。 目前而言 , 閃存壽命足矣維持到你換下一臺手機的時候 。 前不久 ColorOS 官方也回復過該疑問 。
總得來講 , 目前各大廠商推出內存擴展 , 并不是什么新鮮東西 , 雖可以解決一部分用戶的體驗問題 , 但具體效果還是因人而異的 。
最后果子想說:整這么大的內存鬧哪樣啊?需要整治的是目前的毒瘤應用環境!

相關經驗推薦