# 介绍内存泄漏和内存溢出

内存泄漏是指申请的内存空间使用完毕之后未回收。 一次内存泄露危害可以忽略，但若一直泄漏，无论有多少内存，迟早都会被占用光，最终导致程序crash。（因此，开发中我们要尽量避免内存泄漏的出现）

内存溢出是指程序在申请内存时，没有足够的内存空间供其使用。 通俗理解就是内存不够用了，通常在运行大型应用或游戏时，应用或游戏所需要的内存远远超出了你主机内安装的内存所承受大小，就叫内存溢出。最终导致机器重启或者程序crash。

内存泄漏 供应方（操作系统）能提供给需求方（App）的内存越来越少。 内存溢出 需求方（App）需要的内存过大，超过供应方（操作系统）负载。

1.一个是系统能提供的少 2.一个是app需求的多

内存泄漏检测 1.Instruments工具中的Leaks方法分析 2.静态分析，使用xcode的Analyze分析

内存泄漏原理 1.循环引用，从而导致一些内存无法释放 2.ViewController中Block 3.ViewController中的代理delegate 4.ViewController中存在NSTimer 在恰当时机调用\[timer invalidate]

内存溢出解决 1.检查代码中是否有死循环或递归调用 2. 检查是否有大循环重复产生新对象实体
