最近,我正在研究与缓存有关的框架,顺便说一句,我总结了内存缓存和磁盘缓存之间的区别。
缓存分为内存缓存和磁盘缓存。内存是指当前程序的运行空间。缓存速度快,容量小。它用于临时存储文件以供CPU直接读取。例如,当您打开一个程序时,它将存储在内存中,并且在关闭程序后内存将返回到原始的可用空间;磁盘是程序的存储空间,缓存容量大,速度慢,可以持久保存。与内存的区别在于,磁盘将其永久存储,只要它们存储在内部,无论它是否运行,都会占用空间!磁盘缓存位于“库/缓存”中。
关于iOS内存,您必须谈论内存分区。 iOS内存分为5个区域:堆栈区域,堆区域,全局区域,常量区域和代码区域

Stack area stack:该区域将由系统本身管理,我们不需要干预,主要是保存一些局部变量,以及函数跳转时的场景保护。因此,大量的局部变量,深度递归和函数循环调用可能会导致内存用尽并耗尽。
堆区域:与堆栈区域相反,该区域通常由我们自己管理,例如alloc,free操作,并存储一些我们自己创建的对象。
全局区域(静态区域):全局变量和静态变量都存储在此处。初始化和未初始化的变量将分别存储在相邻区域中,程序结束后系统将释放它们。

常量区域:存储常量字符串和const常量
代码区:商店代码


说到硬盘缓存,我不得不提到iOS的沙箱机制,
iOS应用程序只能读取程序创建的文件系统中的文件,而不能访问其他位置。该区域称为沙箱,因此所有非代码文件都必须存储在此处,例如图像和图标,声音,图像,属性列表,文本文件等。


默认情况下,每个沙箱包含3个文件夹:文档,库和tmp。
文档:Apple建议将在程序中创建或在程序中浏览的文件数据保存在此目录中,这将包含在iTunes备份和还原中
库:存储程序的默认设置或其他状态信息;
库/缓存:存储缓存文件。 iTunes不会备份此目录。当应用程序退出时,此目录中的文件不会被删除。
库/首选项:存储存储在用户默认值中的信息,iTunes将备份此目录,应用程序重新启动不会丢弃数据,我们使用NSUserDefaults编写的设置数据将保存到此目录中的plist文件中,叫做写给plist!
tmp:提供一个可以立即创建临时文件的位置,iTunes不会备份此目录
用户生成的文件放置在文档中,而您自己的文件放置在库/缓存中。一个简单的解释:如果您创建一个记事本应用程序,则用户会写一些东西,并且必须将其存储。然后,该文件由用户生成并放置在documents文件夹中。如果您有应用程序,则需要与服务器合作。您经常从服务器下载内容并将其显示给用户。然后将这些下载的内容放置在库/缓存中。苹果对此非常严格,如果放错位置,它将被拒绝。主要原因是ios icloud的同步问题。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shoujiruanjian/article-344124-1.html
好