6

我读过一些关于使用 NSCache 建议的文章,因为很多人提到建议是在 NSCache 中使用 NSPurgeabledata。但是我无法理解这一点,虽然 NSCache 已经能够在内存紧张或达到其计数/成本限制时驱逐其内容,但为什么我们仍然需要在这里使用 NSPurgeabledata?这不是比使用我们已有的数据对象慢吗?我们在这里可以利用什么样的优势?

4

1 回答 1

5

计数限制和总成本限制没有严格执行。也就是说,当缓存超过其限制之一时,它的一些对象可能会立即、稍后或永远不会被驱逐,这一切都取决于缓存的实现细节。所以在这里使用 NSPurgeabledata 的优点是:-

通过使用可清除内存,您可以让系统在需要时快速恢复内存,从而提高性能。标记为可清除的内存在被虚拟内存系统回收时不会分页到磁盘,因为分页是一个耗时的过程。相反,数据被丢弃,如果以后需要,必须重新计算。它像锁定机制一样工作,或者我们可以说它像同步一样工作。如果数据正在由一个线程访问,则没有其他线程可以访问同一个线程,除非第一个线程完成。

于 2013-08-27T07:25:52.840 回答