是指程序中己动态分配的堆内存因为某种缘由未释放或没法释放,那么为何没有释放呢(1.根据JS的垃圾回收机制,当内存中引用的次数为0的时候内存才会被回收 , 2.从根部出发触及到的对象被标记为再也不使用才会被释放)数组
泄漏前,泄漏中,经过Delta对比对象变化浏览器
function Foo(){
var stage = []
setInterval(() => {
debugger
this.data = {
name: 'wbczxxxxxxxxxxxxxxxxxx',
hobby: {
phone: '11'
},
}
stage.push(this.data)
});
}
const foo = new Foo()复制代码
若是你还不能确认是闭包致使的问题,经过调试工具右下角能够发现造成了闭包缓存
打快照发现,Js Arrays对象内存明显上升bash
又经过Delta发现,array数组下的对象的个数在递增,经过对象的key值,能够定位到具体代码,进而定位到因为闭包引发对外层变量的引用,内存未释放闭包
另外若是是浏览器里能够经过Performance也能够查看内存堆随时间的变化函数