process.memoryUsage 可以查看 nodejs占用的内存
内存指标

  1. rss
    1. Resident Set Size,表示一个地址空间,就像门牌号一样
    2. nodejs执行时,为进程执行分配的总内存
    3. heap 表示空间内地址的集合
  2. heapTotal
    1. V8分配的堆的总大小
  3. heapUsed
    1. V8执行旗舰实际使用的内存
  4. external
    1. 进程使用的一些 C的系统库,占用的内存

OOM内存泄漏

OOM,out of memory 内存泄漏

为什么会出现内存泄漏?
nodejs的底层 V8 引擎对内存的使用是有上限的;

  • 64位系统,约为 1.4GB
  • 32位系统,约为 0.7GB

因为 V8对内存的使用限制,当内存超过了这个限制,就会提示内存泄漏 OOM
FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory

出现内存泄露的场景

  1. 前端打包内存溢出Javascript heap out of memory https://www.jianshu.com/p/797ce6d93e69
  2. 云服务器的内存区太小导致执行出错,解决需要增大该内存区域
    1. export NODE_OPTIONS="--max-old-space-size=8192"

Core

内存最初使用线圈做的,所以称之为 Core

CoreDump

CoreDump是在程序运行异常中止或崩溃时,操作系统系统会将内存状态记录下来,保存到某一个文件里面;
这个行为就是 Core dump,类似于快照,或 X光片。