程序运行须要内存。只要程序提出要求,操做系统或者运行时就必须供给内存。 对于持续运行的服务进程,必须及时释放再也不用到的内存。不然,内存占用愈来愈高,轻则影响系统性能,重则致使进程崩溃。
所谓的垃圾回收机制,就是经过变量的引用次数来决定是否回收。 若是一个值的引用次数为0,就表示再也不用到,这个值就会被垃圾回收机制找到回收并释放 例: var arr = [1,2,3,4]; arr = null; //当变量赋值为null时,引用次数为0
怎样能够观察到内存泄漏呢? 若是连续五次垃圾回收以后,内存占用一次比一次大,就有内存泄漏。这就要求实时查看内存占用
操做步骤: 1. 打开开发者工具,选择Performance面板 2. 点击勾选Memory,点击录制按钮(或Ctrl+E) 3. 在页面上模拟用户操做 4. 操做完成后点击Stop(Ctrl+E)完成录制
若是内存占用基本平稳,接近水平,说明不存在内存泄漏。
反之,内存波动差距较大就是内存泄漏
使用Node提供process.memoryUsage()方法返回一个对象,包含Node进程的内存占用信息,该对象包含四个字段。ide
1.res(resident set size):全部内存占用,包括指令区和堆栈2.heapTotal: "堆"占用的内存,包括用到的和没用到的工具
3.heapUsed: 用到的堆的部分,判断内存泄漏以该字段为准性能
4.external: V8 引擎内部的C++对象占用的内存操作系统