内存泄漏
程序中已动态分配的堆内存由于某种原因程序未释放或无法释放引发的问题。
程序的运行需要内存,只要程序提出要求,操作系统或者运行时就必须提供内存。对于持续运行的服务进程,必须及时释放内存,否则,内存占用越来越高,轻则影响系统性能,重则导致进程崩溃。
不再用到的内存,没有及时释放,就叫做内存泄漏。
C需要手懂申请内存释放内存。而JS采用垃圾回收机制,自动释放内存。
垃圾回收机制
垃圾收集器会定期找出那些不再继续使用的变量。然后释放内存。
1.标记清除法
js种最常用的垃圾回收方式是标记清除法。当变量进入环境时,例如在一个函数种声明一个变量,该变量就进入环境。从逻辑上讲,进入环境的变量在执行流进入环境时,就可能用到它们,所以只有当变量离开环境时(函数执行完成)则被回收。
垃圾回收机制在运行的时候会给存储再内存中的所有变量都加上标记,然后去掉处在环境中,和被环境中的变量引用的变量标记。而在此之后剩下的带有标记的变量被视为准备删除的变量。

2.引用计数法
一个值被赋值给一个变量,引用次数加一。变量赋予了新值,则引用次数减一,0表示这个值不在用到了,可以内存释放。
如果一个值不再需要了,引用数却不为0,垃圾回收机制无法释放这块内存,从而导致内存泄漏。

https://blog.csdn.net/qq_17550381/article/details/81126809