垃圾回收策略
- 采用分代回收思想,将内存分为新生代和老生代,对不同对象采用不同的GC算法
- 新生代采用复制算法和标记整理,在内部将空间一分为二,称为使用空间和空闲空间,在程序清理时将使用空间数据拷贝到空闲时间,然后两个空间交换完成资源释放
- 老生代采用标记清楚和标记整理和增量标记算法 ,
- V8内存分配
- 将内存分一分为二,小空间存储新生代对象(32M|16M )
- 新生代指存活时间较短对象
- 老生代指的存活时间较长的对象(1.4G|700M)
提高代码运行效率
- 近层查找
for (let a = 0; a < 10; a++) {
console.log(a)
}
// 上面语句比下面快
var a
for (let index = 0; index < 10; index++) {
a = index
console.log(a)
}
- 减少语句
function a(obj) {
return obj.a === 1
}
// 上面语句比下面快
function a(obj) {
const num = obj.a
return num=== 1
}
- 使用缓存
function a(obj) {
const num = obj.a
console.log(num)
return obj.a === 1
}
// 上面语句比下面快
function a(obj) {
console.log(obj.a)
return obj.a === 1
}
- 减少访问层级
function Person() {
this.name = 'jack'
}
const p = new Person()
console.log(p.name)
// 上面语句比下面快
function Person() {
this.name = 'jack'
this.getName = function(){
return this.name
}
}
const p = new Person()
console.log(p.getName() )
- 减少层级判断
function fun(a,b) {
const arr =[1,2];
if(!arr.includes(a)){
return
}
if(b>3){}
}
// 上面语句比下面快
function fun(a,b) {
const arr =[1,2];
if(arr.includes(a)){
if(b>3){
}
}else{
}
}
- 减少循环体活动
function fun(a,b) {
const arr =[1,2];
var i;
var len = arr.leength;
for(i=0;i<len;i++){}
}
// 上面语句比下面快
function fun(a,b) {
const arr =[1,2];
for(var i=0;i<rr.leength;i++){}
}
- 字面量和构造式
function fun() {
const obj = {
name: 'jack'
}
}
// 上面语句比下面快
function fun() {
const obj = new Objeact()
obj.name = 'jack'
}
本文含有隐藏内容,请 开通VIP 后查看