js的内存管理

 

java的内存是由虚拟机管理的,js的内存是浏览器的引擎管理的。

js内存管理类似java,分为栈内存和堆内存。只是js是在创建变量的时候,自动分配内存。不使用的时候,自动释放。也就是垃圾回收。

包括我们在创建对象,字符串,函数时,都是在分配内存。

我们在使用值的过程,实际就是对内存的读和写。

1,如何理解内存溢出/泄漏

 2,为什么我们说在低版本的ie中,会造成内存泄漏?

垃圾回收算法主要是依赖于引用,对象是否有引用另一个对象(包括显式引用如属性、和隐式的引用如原型)

是因为垃圾回收机制的不同,ie引用计数垃圾收集算法。(无法解决互相引用的问题,在函数执行完毕后,仍然被计为一次)

现在的浏览器垃圾回收,都是采用标记-清除算法。简单说就是看对象可再获得。

3,栈内存和堆内存

栈内存主要存放的是基本类型变量和指针(string,boolern、undefined、number)

堆内存主要存放object类型

栈内存是有序的线性存储,容量小,系统分配效率高。堆内存要分配新的储存区域,还要把指针存到栈中。效率相对低些。

 

posted @ 2021-06-04 11:29  毛栗的demo  阅读(172)  评论(0)    收藏  举报