1.浏览器垃圾回收机制?
一: 标记革除
这种算法的思维是给以后不应用的值加上标记,而后再回收其内存
算法流程:
1.浏览器再运行的时候会给存储再内存中的所有变量都加上标记
2.去掉环境中的变量以及被环境中援用的变量的标记
3.如果还有变量有标记,就会被视为筹备删除的变量
4.垃圾回收机制实现内存的革除工作,销毁那些带标记的变量,并回收他们所占用的内存空间
二:援用计数
这种算法的思维是跟踪记录所有值被援用的次数。javaScript 引擎目前都不再应用这种算法,但再IE 中拜访非原生JavaScriopt 对象(如DOM元素)时,这种算法任然可能会导致问题
当代码中存在循环援用景象时,援用计数算法就会导致问题
解除变量的援用不仅能够帮于打消循环援用景象(一个变量应用完之后赋值为null),而且对垃圾收集也有益处。为了确保无效的回收内存,应该及时解除不再应用的全局对象、全局对象属性以及循环援用变量的援用
算法流程:
1.申明了一个变量并将一个援用类型的值赋值给这个变量,这个援用类型值援用次数就是1
2.同一个值又被赋值另一个变量,这个援用类型的值援用次数加1
3.当蕴含这个援用类型值得变量又被赋值另一个值了,那么这个援用类型的值的援用次数减一
4.当援用次数变成0时, 阐明这个值须要解除援用
5.当垃圾回收机制下次运行时,它就会开释援用次数为0 的值所占用的内存