我蠻想問一下.
請問寫過iOS程式嗎? 知道iOS運作原理嗎? 拿PC Windows比iOS?
拿十幾年前的Windows XP比現代OS的記憶體管理運作?
之前就講過原理了.
iOS在有App大量要求記憶體的時候會強制其它App釋出佔用的記憶體.
但是App如果向iOS短時間要求大量記憶體會被iOS認為是異常而把
App強制結束(也就是大家講的閃退).
所以這類「清除記憶體」程式, 做的就是慢慢的跟iOS要記憶體,
一直到iOS主動清除其它App佔用做Cache的記憶體. 這也就是為什麼
都會看到一個進度條在跑, 因為需要時間慢慢跟iOS要記憶體, 免得
被消滅. 所以, 程式的本體只做了一個進度條, 跟隨著進度條慢慢的
跟iOS要求配置大量的記憶體, 然後查詢記憶體使用量的UI.
這樣一來, 好像記憶體是清除了, 事實上是背景App用的記憶體被清掉,
從背景回到前景的時候反而變得要重新載入跟初始化資料. 本來iOS就
會在App要記憶體但不足的時候自動命令比較不重要(例如很久沒用的背景
App)的記憶體釋放出來給目前要執行的App用, 根本不需要多此一舉!
事實上iOS也好, Mac OS也好, 甚至Windows 10(其實更早的版本也是)
都是不會那麼快釋放記憶體, 等有其它程式要使用再釋放, 這樣就有機會
剛好遇到同樣的程式又被叫起來使用剛剛留下來的資料.
就如同你家如果有儲藏室的話, 會沒事就把儲藏室清空再放東西, 還是
要放東西的時候發現空間不足再來整理?(而且記憶體不會有東西多不好找
的問題)
與失敗為伍者,天天靠盃都是別人的錯。
與成功為伍者,天天跟失敗切磋直到不再出錯。