我正在使用GCD來獲取內存壓力通知。如何迴應GCD的記憶壓力通知?
GCD documentation描述了一些常量像這樣:
DISPATCH_MEMORYPRESSURE_WARN
系統存儲器壓力條件是在警告階段。應用程序 應該釋放他們現在不需要的內存。
DISPATCH_MEMORYPRESSURE_CRITICAL
系統存儲器壓力條件是在關鍵階段。應用程序 應釋放盡可能多的內存。
似乎合乎邏輯,我應該釋放未使用的內存。然而,在其他地方(man pages和source code)我覺得這注有關這些常量:
高架內存壓力是一個全系統的條件,爲了這個源註冊的應用程序 應該通過改變他們的未來 記憶反應使用行爲,例如通過減少新啓動的 操作的緩存大小,直到內存壓力恢復正常。
然而,應用程序應該不橫過並丟棄對於過去操作現有緩存 當系統系統TEM存儲器壓力下進入 升高的狀態,因爲這很可能引發VM操作該 將進一步進一步療法加重系統內存壓力。
這使我困惑。那麼我應該釋放內存,還是應該停止分配新內存?