在js中,垃圾回收机制是针对的内存,什么样的数据是没用的数据,没用的数据将会被销毁,销毁的是哪里的数据。
内存分栈和堆,栈是系统创建,堆是程序员自己创建,若不能合理使用内存,就会导致内存泄漏。
再来谈谈内存的声明周期:
1.分配你所需要的内存,也就是分配空间
2.使用配置你所需要的内存(读,写)
3.不需要时,将其释放(所谓的垃圾回收机制)
首先是系统自分配,js在定义变量时就自动完成了分配。例:
var n=123;// 栈会给数值变量分配空间 用来存123 var str='123';//栈 给str 变量 分配空间 用来存字符串 '123' // 栈给 o 变量分配空间 存指针。 // 堆来存对象数据 // 栈给对象下属性name分配空间 用来存字符串'周超' var o={ name:'周超' } // 给数据及其元素分配空间 // 栈给arr存指针 栈存元素 堆创建空间存数组;提供指针 var arr=[1,2,3]; // 给函数(可调用的对象)分配内存 // 栈 foo 存指针 堆存函数提供指针 // 函数调用 栈存返回值 (【返回值】长时间没被变量引用,计算机销毁) function foo(a){ return a+2 }还有就是函数调用分配空间
// 有些函数通过调用来对象分配 var date=new Date();//date 通过调用Date() 函数给日期对象分配空间; var str='dafrssedeb'; var subStr=str.substr(0,4);//dafr subStr一个新的字符串 // 使用值 // 写:往内存中写入变量或对象下属性,并赋值 // 读:读的是内存中存的数据看完上面,我们来看看垃圾回收机制。
最后,闭包与垃圾回收机制