内存生命周期:
程序的执行需要内存。只要程序请求,操作系统或操作系统就必须提供内存。
对于持续运行的服务进程,必须及时释放内存。否则,内存使用率会越来越高,最好的情况下会影响系统性能,最坏的情况下会导致进程崩溃。
内存泄漏的情况:全局变量、未销毁的定时器和回调函数(setInterval)、闭包(外部函数的变量被引用且无法释放)、DOM引用(元素被移除,但还有还是元素的引用)
识别无用变量的方法有两种:标记清除法和引用计数法。
当变量进入环境时,该变量被标记为“进入环境”,当变量离开环境时,被标记为“离开环境”。
您可以使用“进入环境变量列表”和“退出环境变量列表”来跟踪变量的更改。您还可以切换一个特殊位来记录变量何时进入和离开环境。环境。
当声明变量并赋予引用类型值时,对该值的引用次数为1;当相同的值被赋给另一个变量时,对该值的引用次数加1;如果包含对该值的引用的变量接收到不同的值,则对该值的引用数量将减少1。当引用数变为0时,就可以回收其占用的空间。下次垃圾收集器运行时,它会释放引用计数为0的值占用的内存。
如何观察内存泄漏?
经验法则:如果连续五次垃圾回收后内存使用量每次都增加,则存在内存泄漏。这需要实时查看内存使用情况。
正如已经提到的,及时澄清参考文献非常重要。但是,如果你不小心忘记了,你就记不住那么多了,所以内存泄漏的情况非常多。
创建新引用时,声明哪些引用必须手动删除,哪些引用可以忽略。当其他引用消失时,垃圾收集机制可以释放内存。这显着减轻了程序员的负担,因为他只需删除主要引用。