1.内存管理的宗旨就是避免大量JavaScript的网页耗尽系统内存导致系统奔溃。因此再优化内存的时候,要保证执行代码中只保存必要的数据,如果数据不需要则设置为null
2.通过const和let提升性能
3.隐藏类和删除操作:再JavaScript中应该践行“先创建再补充”式的动态属性赋值,并在函数中一次性声明所以的属性
function Article () {
this.title = "view..................."
}
let a1 = new Articel()
let a2 = new Article()
a1和a2实例共享相同的隐藏类,因为他们两个实例共享同一个构造函数和原型,假设之后又添加下面这段代码
a2.author = 'Jake'
根据上述原则,需要把function改成下面这样
function Article (options) {
this.title = "view..................."
this.author = options
}
let a1 = new Articel()
let a2 = new Article('Jake')
3 内存泄漏
JavaScript中的内存泄露大部分是由于不合理的引用导致的如下面例子
1.没有修饰的变量
function() {
name = "view"
}
解释器会把变量name当作widow的属性来创建(相当于widow.name = "view"),只要window对象存在,那么name就不会被清理掉
2.定时器导致内存泄漏
定时器的回调通过闭包引入外部变量道中内存泄漏
let name = "view"
setInterval (() => {
console.log('name:' +name)
},0)
只要定时器一直在运行,那么name就一直被调用,那么name就不能被释放调
3.闭包引起内存泄漏
闭包引起内存泄漏只要是因为变量被引用,无法释放掉,如下所示
let outer = function () {
let name = " view"
return function () {
return name
}
}
调用outer()会导致name的内存泄漏,以上代码就是创建一个内部闭包,只要返回的函数不清理name,因为闭包一直存在,那么name就不能被清理掉
网友评论