什么是内存走漏?
顺序运转须要内存。只需顺序提出请求,操纵体系或许运转时就必需供应内存。
关于延续运转的效劳历程,必需及时开释不再用到的内存。不然,内存占用越来越高,轻则影响体系机能,重则致使历程崩溃。
渣滓接纳机制
所谓的渣滓接纳机制,就是经由过程变量的援用次数来决议是不是接纳。
假如一个值的援用次数为0,就示意不再用到,这个值就会被渣滓接纳机制找到接纳并开释
例: var arr = [1,2,3,4];
arr = null; //当变量赋值为null时,援用次数为0
内存走漏识别要领
如何能够观察到内存走漏呢?
假如一连五次渣滓接纳以后,内存占用一次比一次大,就有内存走漏。这就请求及时检察内存占用
Chrome游览器
操纵步骤:
1. 翻开开发者东西,挑选Performance面板
2. 点击勾选Memory,点击录制按钮(或Ctrl+E)
3. 在页面上模仿用户操纵
4. 操纵完成后点击Stop(Ctrl+E)完成录制
假如内存占用基础安稳,靠近程度,申明不存在内存走漏。
反之,内存波动差异较大就是内存走漏
运用Node敕令
运用Node供应process.memoryUsage()要领返回一个对象,包含Node历程的内存占用信息,该对象包含四个字段。
1.res(resident set size):一切内存占用,包含指令区和客栈
2.heapTotal: “堆”占用的内存,包含用到的和没用到的
3.heapUsed: 用到的堆的部份,推断内存走漏以该字段为准
4.external: V8 引擎内部的C++对象占用的内存