最近图片服务器 内存占用飙涨 ,从之前的100Mb左右 两天之后就会涨到 1.7gb左右,应该是内存泄漏了,现在来看看为啥

  1. 工具
    heapdump node.js 内存分析包
    chrome 用于分析 dump下来的文件
  2. 搞起来
    先在代码中 引用
    const heapdump = require('heapdump')
    
  3. 运行 node bin/www
  4. 找到这个进程的pid
    pgrep node
  5. kill -USR2 pid 正常情况下 直接kill 这个进程会杀死这个进程,但是导入heapdump这个包之后就不会,在生产环境这个命令也可以使用 然后在当前目录就会生成 heapshot文件 了,
  6. 打开chrome 打开开发者工具 -> 点击memory 右键 load 把生产的heapshot 导入进来就可以看到内存占用了
  7. 这里推荐 生产2到3个heapshot文件 ,然后分析工具 有几种可以选择
    1. summay 总体查看内存分布 这里分析内存泄漏 没啥用
    2. comparision 前后对比 主要使用这个
    3. containment
    4. statis
  8. 点击 comparision 之后 点击 最右边的size delta 按降序排列 可以查看变更内存差异最大的

    以目前我这个举例,bitwiseTo 这个方法引用了相当多的内存,应该是闭包 引用没释放的原因
    经过查看代码 ,预计是canvas这个库 调用这个方法导致的