2014/6/24 updated

由於 iOS 的記憶體管理方式類似 Mac OS X,執行過的程式多半會留在記憶體裡,等到記憶體不夠時才由系統強迫釋出。這樣做的好處是,幾個常用/剛開過的程式啟動速度會非常快。小缺點是記憶體被迫釋放時會 LAG 一下,有時甚至會讓程式變慢、當掉跳出。原則上使用者其實不用思考這個啦!蘋果也認為使用者不需要思考這些系統管理層級的事情!(當掉跳出大不了再重開一次,多半就會好;甚至關機重開就好了。)

蘋果這樣的記憶體管理設計,在記憶體充足時用起來會很爽;而 iOS 系統的多工設計,使得記憶體需求低於同期 Android 裝置;然而 iOS 裝置的記憶體,也確實給得比同期 Android 裝置還少!

主記憶體 iOS 裝置 iOS 最後支援版本
128 MB iPhone iPod touch 1Gen 3.1.3
iPhone 3G iPod touch 2Gen 4.2.1
256 MB iPod touch 3Gen iPad 1Gen 5.1.1
iPhone 3GS iPod touch 4Gen 6.1.6
512 MB iPhone 4
iPhone 4S iPod touch 5Gen iPad 2 / mini 1
1 GB iPhone 5 iPad 3Gen / 4Gen
iPhone 5s/5c iPad Air(5) / mini 2

假如系統的記憶體管理機制做得夠好,使用者當然是可以不用去多想這種問題….然而隨著舊款裝置升級到吃愈大記憶體的新版 iOS (尤其安裝的是愈新版 iOS 時)或執行大容量的遊戲程式,有時會開沒幾個程式就開始「嚴重」LAG 了!承認吧,有時候 iOS 就是沒那麼好!大概是新版 iOS 當然會針對新裝置好好調校,但對舊裝置就…而且蘋果的理念,確實希望你更換新機!

覺得變慢的時候怎麼辦呢?

※ 方法(一):關掉多工列上的前幾個程式

iOS 7 以上

  • 按兩下 Home 鍵叫出「最近用過的應用程式」列表。將前幾個程式畫面向上滑出即可強制關閉這幾個程式。(官方文件:iOS:強制應用程式關閉

7 以上

iOS 4~6

  • 按兩下 Home 鍵叫出「最近用過的應用程式」列表。在程式圖示上長按,開始抖動時刪掉前幾個程式,即可強制關閉這幾個程式。(官方文件:iOS:認識多工處理

iOS 1~3 或 iOS4 在二代機上

※ iOS 1 不支援 App Store;iOS 2~3 不支援第三方應用程式多工;iOS4 的多工模式在二代機上被封鎖了。
※ 能在背景佔住記憶體的只有系統內建的幾個程式:iPod(音樂), Mail, Safari。所以要是開過這幾個程式,記憶體就很可能會不夠!

  • 強制關閉程式的方法:在程式中,長按 Sleep 鍵直到出現關機那一紅色條後,再長按 Home 鍵直到程式關閉並回到桌面。
  • Safari 只要關閉所有分頁後退出,就會直接關掉不佔記憶體。

被移除的官方文件:iPhone and iPod touch: What to do when applications close unexpectedly while in use(on Internet Archive)、官方文件:iOS:沒有回應或無法開機

※ 方法(二):重開機

按住“睡眠/喚醒”按鈕幾秒鐘,直到紅色“移動滑桿來關機”滑桿出現,然後拖移滑桿。
按住“睡眠/喚醒”按鈕,直到出現 Apple 標誌為止。
(官方文件:iPhone、iPad、iPod touch:關機、開機(重新啟動)以及重置

※ 選用方案:改用耗系統資源較少的程式

由於可用記憶體大約少於 10 MB 時,系統就會發出要求釋出記憶體的訊號。要是此時也只執行了一個程式,那就勢必容易當掉跳出了!(對於裝了能支援的最高版本 iOS 的舊裝置特別容易如此)

  • 瀏覽 Twitter 改用 TweetLists,點開網頁連結時啟用 Mobilizer.
  • 瀏覽器改用 Mercury,並啟用選項中的 其他-性能選項-啟用移動模式(Google Mobilizer)

※ 絕技:JailBreak(越獄)後的解法

  • 用 SBSettings 就能在 Processes 裡手動移除在記憶體裡的程式、或點選 FREE UP MEMORY,或裝其他外掛來一鍵移除所有在記憶體裡的程式。
  • 可安裝 Backgrounder 來強制設定個別程式是否能多工(佔住記憶體),譬如設定 Safari 不能多工:【Overrides – 設定 Safari 的 Backgrounding state: Enable at Launch 為 OFF】。
  • 由於 iOS 不支援使用儲存空間來模擬記憶體(但各大桌面作業系統都支援)(ref),JB後有方法開啟此功能,不過我沒試過請自行查閱,曾看過災情故後果自負喔。

※ 第三方應用程式 分享到 Facebook/用 Facebook 帳號登入

由於新的授權方式會跳轉到 Facebook 官方應用程式 或 官方網頁去登入,而這需要多工(即跳轉到 Facebook 程式時,原程式仍需保持在記憶體裡,才會授權成功),這對於沒有多工的第一、二代 iOS 裝置會失效。

Jb 後可以透過 Backgrounder 來設定。
或者直接刪掉 Facebook 官方應用程式試看看,有可能就能照舊方法、直接在程式內登入 facebook 帳號密碼授權了。

(App Store 上有一些記憶體管理和釋放的程式。不過也許由於蘋果公司考量使用者不用知道這些,曾經被掃蕩下架過。但第三方程式沒有管理系統資源的權限…所以釋放記憶體應該是透過徵求大量記憶體,讓系統強制釋出?)

About these ads