当前位置:网站首页>内存泄露与内存溢出
内存泄露与内存溢出
2022-08-11 05:17:00 【前端小马】
内存溢出:
当程序运行需要的内存超过了剩余的内存时, 就出抛出内存溢出的错误
内存泄漏:
1. 占用的内存没有及时释放
2. 内存泄露积累多了就容易导致内存溢出
3. 意外的全局变量:
JavaScript 处理未定义变量的方式比较宽松:未定义的变量会在全局对象创建一个新变量。在浏览器中,全局对象是 window 。
function fun(arg) {
a=1
}
//实际上是
function fun(arg) {
window.a=1
}
另一种意外的全局变量可能由 this 创建
function fun() {
this.a = "aaa";
}
// fun 调用自己,this 指向了全局对象(window)
fun();
3. 没有及时清理的计时器或回调函数
setInterval(function(){
console.log("...")// 启动定时器不清理
},100)
var time=setInterval(function(){
console.log("...")
},100)
clearInterval(time)//及时清理
4.闭包没有释放
function fn1() {
var arr = new Array(999999);
function fn2() {
console.log(arr.length);
}
return fn2;
}
var f = fn1(); //因函数fn2被f引用,所以fn2不会被回收
f();
f = null;//让内部函数成为垃圾对象,回收闭包,及时释放
边栏推荐
猜你喜欢
随机推荐
flaks框架学习:在 URL 中添加变量
(1) Construction of a real-time performance monitoring platform (Grafana+Influxdb+Jmeter)
【记录】TypeScript
task05 PyTorch可视化
Flask framework learning: template inheritance
ClionIDE通过指定编译器编译
lspci 命令使用
EOF, feof function, ferror function in C language
字符与字符串
搭建PX4开发环境
Minecraft
C语言——文件操作详解(1)
Introduction of several ways to initialize two-dimensional arrays in C language (private way to initialize large arrays)
更新啦~人生重开模拟器自制
【C语言从初阶到进阶】第一篇 初始C语言(一)
LeetCode43. String multiplication (this method can be used to multiply large numbers)
Django--20 implements Redis support, context, and interaction of context and interface
【CSDN21天学习挑战赛】第一天,配置环境外加实现mnist手写数字识别
QT GrabWindow截取屏幕
08-Express路由详解