面试了许多求职者,很多求职者只知其然,而不知所以然,写此文章为广大前端小伙伴指引迷津。纯干货!纯干货!纯干货!
目录
垃圾回收
什么是垃圾?
答:从根上不可访问的,以及没有被引用的对象是垃圾。
什么是垃圾回收?
答:垃圾收集器会定期(周期性)找出那些不在继续使用的变量,然后释放其内存。
垃圾回收机制的作用?
答:将已占用的内存释放出来,以便能够再使用,否则造成系统崩溃。
垃圾回收机制的实现原理?
答:采用标记清除、引用计数方式。
标记清除:当变量进入执行环境时,将该变量标记'进入环境',当变量出执行环境时,将该变量标记'离开环境',最后垃圾回收器在下一次周期里,释放标记'离开环境'的变量内存。
引用计数:语言引擎有一张引用表,保存了内存里面的引用次数,如果一个值的引用次数为0,表示该值不再使用,可以释放。
垃圾回收机制的使用场景?
答:局部变量等;
垃圾回收机制的弊端?
答:为浏览器设计,不太可能遇到大量内存的场景,会导致线程短暂停止从而引起性能问题(卡顿等)。
垃圾回收机制的笔试题?
function fn1() {
var obj = {name: 'hanzichi', age: 10};
}
function fn2() {
var obj = {name:'hanzichi', age: 10};
return obj;
}
var a = fn1();
var b = fn2();
console.log(a,b)
答案:undefined {name:'hanzichi', age: 10}
面试大白话
答:首先,垃圾回收机制是垃圾收集器会定期找出不再继续使用的变量,然后释放内存。其主要目的也是为了内存能够循环利用。它的原理就是采用标记清除、引用计数算法将进行垃圾回收,释放内存。