企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
[toc] ### 1.什么是内存泄漏? 我们在声明一些变量,或者建立一些引用的时候,当我们不用的时候,没有及时释放掉这部分内存,就是**内存泄漏**,内存泄漏积累多了就会造成**内存溢出** ### 2.什么是内存溢出 程序运行时出现的错误,程序需要的内存超过了系统剩余的内存,就会抛出内存溢出的错误 ### 3.常见的内存泄漏 1.声明全局变量没有变为null,或者重新定义 2.闭包 3.在分离dom节点的过程中,如果该节点被全局引用了 ```js let btn = document.querySelector('button') let child = document.querySelector('.child') let root = document.querySelector('#root') // 该方法虽然删除了 child 节点,但是内存中并未释放 // 因为上面 child 被全局引用了 btn.addEventListener('click', function() { root.removeChild(child) }) // let btn = document.querySelector('button') // 改写成这样,变成函数内引用就可释放 btn.addEventListener('click', function() { let child = document.querySelector('.child') let root = document.querySelector('#root') root.removeChild(child) }) ``` 4.控制台打印 5.定时器未及时清除 ### 4.垃圾回收机制 js的垃圾回收机制是自动执行的,会通过标记来识别并清除垃圾数据