

新闻资讯
技术学院JavaScript内存泄漏是因引用未断开致GC无法回收,主要类型包括:①意外全局变量,②未清除事件监听器,③闭包持有大对象或DOM引用,④未释放定时器和DOM引用;核心原则是“谁创建引用,谁负责断开”。
JavaScript内存泄漏,指的是本该被自动回收的内存,因为某些引用未断开,导致垃圾回收器(GC)无法释放它,内存占用持续增长,最终可能拖慢甚至卡死页面。
函数里漏写let/const/var,变量会悄悄挂到window上,长期驻留。比如this在非严格模式下调用时指向window,也可能意外创建全局属性。

DOM元素被移除后,如果还留着addEventListener绑定的回调,整个回调函数及其闭包里的变量都动不了——尤其当回调里引用了大数组、图片或组件实例时,泄漏更明显。
闭包会让外部变量“活”得比预期久。比如一个计数器闭包里存了10MB的ArrayBuffer,哪怕业务早不用了,只要闭包还在,这块内存就一直占着。
setInterval没清,回调函数和它用到的所有变量就永远在线;DOM节点从页面删了,但JS里还有const el = document.getElementById(...),那这个节点连带它的样式、事件、子节点全卡在内存里。
基本上就这些。核心就一条:谁创建的引用,谁负责断开。保持对变量生命周期的敏感,比等内存爆了再查更省力。