内存检查:多种类型的内存泄漏分析方案

24-05-24 11:08 1178 0

内存泄漏

内存泄漏(Memory Leak)是指程序中已动态分配的堆内存,由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。

这是来自百度百科的一段解释,下面我们先来看下 Node.js 中的内存回收策略。

Node.js GC 的策略

首先我们要理解在 Node.js 存储中分为堆和栈:

栈中主要存储的是一些原始类型,比如 Boolean、Null、Undefined、Number、BigInt、String 以及 Symbol;

堆中主要存储引用类型的数据,比如对象、全局变量等。

由于栈是系统存储的临时数据,因此系统会进行释放,不会引发内存泄漏问题;而堆中的数据是需要程序自己进行清理,因此存在内存泄漏风险,在 JavaScript 中进行垃圾回收的有引用计数和标记清除法。

而在 Node.js V8 引擎中使用了多种方法的融合:

对于存活较短的存储对象会使用Scavenge 算法;

而对于存活较长的对象或者说在 Scavenge 算法中存储的对象数据超过一定比例时,则会使用标记清除法与标记整理法相结合的方式。

具体这三种算法的细节,你需要自行去了解下,本讲核心还是内存泄漏的类型以及分析方法,下面我们先来了解下内存泄漏的分类。


发表我的评论

表情

共0条评论
  • 这篇文章还没有收到评论,赶紧来抢沙发吧~