js的内存管理
java的内存是由虚拟机管理的,js的内存是浏览器的引擎管理的。
js内存管理类似java,分为栈内存和堆内存。只是js是在创建变量的时候,自动分配内存。不使用的时候,自动释放。也就是垃圾回收。
包括我们在创建对象,字符串,函数时,都是在分配内存。
我们在使用值的过程,实际就是对内存的读和写。
1,如何理解内存溢出/泄漏
2,为什么我们说在低版本的ie中,会造成内存泄漏?
垃圾回收算法主要是依赖于引用,对象是否有引用另一个对象(包括显式引用如属性、和隐式的引用如原型)
是因为垃圾回收机制的不同,ie引用计数垃圾收集算法。(无法解决互相引用的问题,在函数执行完毕后,仍然被计为一次)
现在的浏览器垃圾回收,都是采用标记-清除算法。简单说就是看对象可再获得。
3,栈内存和堆内存
栈内存主要存放的是基本类型变量和指针(string,boolern、undefined、number)
堆内存主要存放object类型
栈内存是有序的线性存储,容量小,系统分配效率高。堆内存要分配新的储存区域,还要把指针存到栈中。效率相对低些。
浙公网安备 33010602011771号