GCD を使用してメモリ不足の通知を取得しています。
GCD のドキュメントでは、次のような定数について説明しています。
DISPATCH_MEMORYPRESSURE_WARN
システムのメモリ不足状態は警告段階にあります。アプリは、現在必要のないメモリを解放する必要があります。
DISPATCH_MEMORYPRESSURE_CRITICAL
システム メモリの圧迫状態が危機的な段階にあります。アプリはできるだけ多くのメモリを解放する必要があります。
未使用のメモリを解放する必要があるのは理にかなっているようです。ただし、他の場所 ( man ページとソース コード) で、これらの定数に関連するこのメモを見つけました。
メモリ プレッシャーの上昇は、このソースに登録されたアプリケーションが将来のメモリ使用動作を変更することによって対応する必要があるシステム全体の状態です。たとえば、メモリ プレッシャーが正常に戻るまで、新しく開始された操作のキャッシュ サイズを縮小します。
ただし、システム システム メモリ プレッシャーが上昇した状態になった場合、アプリケーションは過去の操作の既存のキャッシュをトラバースして破棄しないでください。これは、システム メモリ プレッシャーをさらに悪化させる VM 操作をトリガーする可能性があるためです。
これは私を混乱させます。では、メモリを解放する必要がありますか、それとも新しいメモリの割り当てを停止する必要がありますか?