栈(stack):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。基本数据类型放到栈里面。
堆(heap):一般由程序员分配释放, 若程序员不释放,由垃圾回收机制回收。复杂数据类型放到堆里面。
基本数据类型:number:数值、、string:字符串、boolean:Boolean(布尔值)、undefine:Undefined 类型、null : Null类型、symbol:Symbol (符号)
复杂数据类型:object、array、function、new
js垃圾回收机制:
是一种自动内存管理机制,它可以自动地识别不再使用的变量和对象并将它们从内存中清除,以释放内存空间。
JS的内存生命周期:
1、内存分配:声明变量、函数、对象的时候,系统自动为他们分配内存;
2、内存使用:读写内存,也就是使用变量、函数等;
3、内存回收:使用完毕,垃圾回收器自动回收不再使用的内存。
说明:全局变量一般不会回收(关闭页面回收)
一般情况下局部变量的值,不使用就会自动回收掉。
内存泄漏:程序中分配内存有其他原因程序未释放或无发释放叫做内存泄漏。
回收方式:标记清除、引用计数。