JavaScript中变量的存放浏览器
- 一、基本类型:基本数据类型会保存在栈中,基本类型的值在内存中都占用固定大小的空间,能够按值访问。基本类型有:Undefined,Null,Number,String,Boolean和Symbol。闭包中的变量不会保存在栈内存中,而是保存在堆内存中。
- 二、引用类型:引用类型在内存中占用的空间大小是不肯定的,可是引用类型的值在内存中的地址是肯定的,因此引用类型的访问地主会保存在栈里面,引用类型的具体的值会保存在堆里面。当访问引用类型的值时,先从栈中获取这个值的地址,再经过地址找到堆中的值,这样的方式叫作按引用访问。
JavaScript中内存生命周期
JavaScript的内存回收
JavaScript有垃圾自动回收机制,垃圾收集器每隔一段时间就会运行一次,会自动的将再也不使用的变量占用的内存释放。闭包
一、局部变量和全局变量的销毁函数
- 局部变量:在局部做用域中,当函数执行完成以后,局部变量就没有存在的必要了,垃圾回收器会在运行的时候销毁局部变量并释放内存。
- 全局变量:全局变量是在最后进行销毁的,会长时间占用内存,因此应该尽可能减小全局变量的使用。
经常使用的垃圾回收方法
- 标记清除法(现代浏览器已经再也不使用):缺点是当出现循环引用的时候,会致使内存不能释放,出现内存泄漏的问题。
- 引用计数法(比较经常使用)
内存泄漏
若是没有及时释放再也不被使用的内存,就会致使内存占用愈来愈高,致使进程崩溃,这样的现象就是内存泄漏。生命周期