前端开发面试(四)

JavaScript中变量的存放浏览器

  • 一、基本类型:基本数据类型会保存在栈中,基本类型的值在内存中都占用固定大小的空间,能够按值访问。基本类型有:Undefined,Null,Number,String,Boolean和Symbol。闭包中的变量不会保存在栈内存中,而是保存在堆内存中。
  • 二、引用类型:引用类型在内存中占用的空间大小是不肯定的,可是引用类型的值在内存中的地址是肯定的,因此引用类型的访问地主会保存在栈里面,引用类型的具体的值会保存在堆里面。当访问引用类型的值时,先从栈中获取这个值的地址,再经过地址找到堆中的值,这样的方式叫作按引用访问。
JavaScript中内存生命周期
  • 分配内存
  • 使用内存
  • 释放内存
JavaScript的内存回收

JavaScript有垃圾自动回收机制,垃圾收集器每隔一段时间就会运行一次,会自动的将再也不使用的变量占用的内存释放。闭包

一、局部变量和全局变量的销毁函数

  • 局部变量:在局部做用域中,当函数执行完成以后,局部变量就没有存在的必要了,垃圾回收器会在运行的时候销毁局部变量并释放内存。
  • 全局变量:全局变量是在最后进行销毁的,会长时间占用内存,因此应该尽可能减小全局变量的使用。
经常使用的垃圾回收方法
  • 标记清除法(现代浏览器已经再也不使用):缺点是当出现循环引用的时候,会致使内存不能释放,出现内存泄漏的问题。
  • 引用计数法(比较经常使用)
内存泄漏

若是没有及时释放再也不被使用的内存,就会致使内存占用愈来愈高,致使进程崩溃,这样的现象就是内存泄漏。生命周期

相关文章
相关标签/搜索