目录
v8是什么看这里
浏览器工作原理和V8引擎_ispaomoya博客-CSDN博客
一、直接上代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>内存泄露</title>
</head>
<body>
<script>
function fun() {
let arr = new Array(1024 * 1024).fill(1)
// 这里形成一个闭包
return function () {
console.log(arr.length);
}
}
// 这是为过程一:为了看到效果,这里延迟执行
let n = []
for (let i = 0; i < 100; i++) {
setTimeout(() => {
n.push(fun())
}, i * 100)
}
// 这里为过程二:这里延迟删除,会发生什么?
// v8会根据自己的垃圾回收时间,在某个时间一次性删除没有引用的
setTimeout(() => {
// 这里写了50,上面是push了100,那么就是回收一半
for (let i = 0; i < 50; i++) {
setTimeout(() => {
n.pop()
}, i * 100)
}
// n = null//如果直接设为null,那么在某个时间段直接降下来
}, 20000)
</script>
</body>
</html>
二、如何验证
打开谷歌浏览器,按f12,点击performonce,点击左上角灰暗的实心圆形,录制30秒
(录制一开始后,这里建议右键点击谷歌浏览器左上角刷新按钮,选择清空缓存)