我正在使用 GCD 来获取内存压力通知。
GCD 文档描述了一些常量,如下所示:
DISPATCH_MEMORYPRESSURE_WARN
系统内存压力状况处于警告阶段。应用程序应该释放他们现在不需要的内存。
DISPATCH_MEMORYPRESSURE_CRITICAL
系统内存压力情况处于临界阶段。应用程序应该尽可能多地释放内存。
我应该释放未使用的内存似乎是合乎逻辑的。但是,在其他地方(手册页和源代码)我发现这个注释与这些常量相关:
内存压力升高是系统范围的条件,为此源注册的应用程序应通过更改其未来的内存使用行为来做出反应,例如通过减少新启动操作的缓存大小直到内存压力恢复正常。
但是,当系统系统内存压力进入升高状态时,应用程序不应遍历和丢弃过去操作的现有缓存,因为这可能会触发 VM 操作,从而进一步加剧系统内存压力。
这让我很困惑。那么我应该释放内存,还是应该停止分配新内存?