美文网首页网络请求疯狂iOSiOS开发
iOS内存缓存和磁盘缓存的区别

iOS内存缓存和磁盘缓存的区别

作者: 子夏的不语 | 来源:发表于2018-01-03 21:50 被阅读350次

最近在看缓存相关的框架,刚好顺便总结一下内存缓存和磁盘缓存的区别。

缓存分为内存缓存和磁盘缓存两种,其中内存是指当前程序的运行空间,缓存速度快容量小,是临时存储文件用的,供CPU直接读取,比如说打开一个程序,他是在内存中存储,关闭程序后内存就又回到原来的空闲空间;磁盘是程序的存储空间,缓存容量大速度慢可持久化与内存不同的是磁盘是永久存储东西的,只要里面存放东西,不管运行不运行 ,他都占用空间!磁盘缓存是存在Library/Caches。

说道iOS内存就不得不说内存分区了,iOS内存分为5个区:栈区,堆区,全局区,常量区,代码区

栈区stack:这一块区域系统会自己管理,我们不用干预,主要存一些局部变量,以及函数跳转时的现场保护。因此大量的局部变量,深递归,函数循环调用都可能导致内存耗尽而运行崩溃。

堆区heap:与栈区相对,这一块一般由我们自己管理,比如alloc,free的操作,存储一些自己创建的对象。

全局区(静态区static):全局变量和静态变量都存储在这里,已经初始化的和没有初始化的会分开存储在相邻的区域,程序结束后系统会释放

常量区:存储常量字符串和const常量

代码区:存储代码

说道硬盘缓存这里就不得不提 iOS的沙盒机制, 

    iOS应用程序只能在该程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等

 默认情况下,每个沙盒含有3个文件夹:Documents, Library 和 tmp。

         Documents:苹果建议将程序中建立的或在程序中浏览到的文件数据保存在该目录下,iTunes备份和恢复的时候会包括此目录

        Library:存储程序的默认设置或其它状态信息;

          Library/Caches:存放缓存文件,iTunes不会备份此目录,此目录下文件不会在应用退出删除.

          Library/preferences: 存放的是 user default 存储的信息,iTunes会备份此目录, 应用程序重新启动不会丢弃数据,我们使用 NSUserDefaults写的设置数据都会保存到该目录下的一个plist文件中,这就是所谓的写到plist中!

          tmp:提供一个即时创建临时文件的地方, iTunes不会备份此目录

用户生成的文件放在documents,自己的文件放在library/cache里面,简单的说明:如果你做个记事本的app,那么用户写了东西,总要把东西存起来。那么这个文件则是用户自行生成的,就放在documents文件夹里面。如果你有一个app,需要和服务器配合,经常从服务器下载东西,展示给用户看。那么这些下载下来的东西就放在library/cache。apple对这个很严格,放错了就会被拒。主要原因是ios的icloud的同步问题。

相关文章

  • iOS内存缓存和磁盘缓存的区别

    最近在看缓存相关的框架,刚好顺便总结一下内存缓存和磁盘缓存的区别。 缓存分为内存缓存和磁盘缓存两种,其中内存是指当...

  • iOS 开发中内存缓存与磁盘缓存?图片如何缓存?

    『导言』 iOS开发中,如何保证图片只被下载一次?如何缓存图片?内存缓存?磁盘缓存?到底如何区别?如何联系? 温馨...

  • Glide缓存汇总

    Glide缓存汇总 1、Glide有内存缓存和磁盘缓存 2、缓存策略 3、内存缓存 4、磁盘缓存 5、缓存位置和大...

  • iOS内存缓存和磁盘缓存的区别

    每次启动 app 文件保存的前缀 路径 都会改变 。所以再存取路径的 时候,就要 替换 原来的前缀路径 ,拼接出来...

  • YYCache 源码学习总结

    YYCache 内存分为内存缓存和磁盘缓存 内存缓存 1.内存缓存实现通过CFMutableDictionaryR...

  • YYCache源码学习

    通常缓存是由内存缓存和磁盘缓存组成的,内存缓存容量小但是存取速度快,磁盘容量大但是存取速度慢。 内存缓存 YYMe...

  • Android 两种缓存方式介绍

    Android缓存分为内存缓存和磁盘缓存。 内存缓存(LruCache) 在早期的 Android 2.x 时代,...

  • iOS数据存储方式(Core Data/Keycahin/NSU

    前言 在iOS开发中数据存储的方式可以归纳为磁盘缓存和内存缓存:磁盘缓存分为两类:文件、数据库存储。 文件存储:N...

  • 【iOS】YYCache源码阅读笔记

    基本思路 由内存缓存和磁盘缓存组成,内存缓存提供容量小但高速的存取功能,磁盘缓存提供大容量但低速的持久化存储,磁盘...

  • iOS 内存缓存和磁盘缓存

    一、缓存方式分为两种: 常见的内存缓存框架有NSCache、TMMemoryCache、PINMemoryCach...

网友评论

    本文标题:iOS内存缓存和磁盘缓存的区别

    本文链接:https://www.haomeiwen.com/subject/bdphnxtx.html