浏览器缓存策略、状态码见@AJAX到http

浏览器的垃圾回收机制

V8垃圾回收机制

用于管理代码运行过程中使用的内存

存在原因

垃圾收集器会按固定时间周期性的执行,去找出那些不继续使用的变量,然后释放其内存,如果内存开销比较大,GC就会停止响应其他操作,它会阻塞其他应用程序的执行。

方法

当不再被引用时,就会被垃圾回收,联系闭包。通常两种方式。

标记清除法(常用)

从对象开始递归遍历所有可以访问的对象,把它们标记为活动对象,然后清除未被标记的对象。

然后清除标记,等待下一次标记,也就是下一次清理

引用计数法(IE)

跟踪对象的引用次数,每当对象被引用时,引用次数加一,取消引用就减一。计数为0时,说明不再被引用,于是回收。

问题:循环引用时,两对象相互引用时,永远不为零。

1
2
3
4
5
6
7
function fun(){
var f ={};
var g ={};
f.userName=g;
g.userName=f
//循环引用无法为零
}

改进:

分代收集(根据存活时间,将内存分为四代)、增量收集(将垃圾回收拆分为多个小步骤,避免js被阻塞)

缺陷

GC时会停止响应其他操作,为了安全

耗时一般在100ms以上,当遇见动画、js游戏连贯性、操作性要求比较高时,GC就需要被优化,避免停止响应。

三色标记

v8策略

新生代、老生代区域

增量标记

并发回收

具体的算法是什么,GC的优化策略是什么,包括分代回收,增量GC