最近图片服务器 内存占用飙涨 ,从之前的100Mb左右 两天之后就会涨到 1.7gb左右,应该是内存泄漏了,现在来看看为啥
- 工具
heapdump node.js 内存分析包
chrome 用于分析 dump下来的文件 - 搞起来
先在代码中 引用const heapdump = require('heapdump')
- 运行 node bin/www
- 找到这个进程的pid
pgrep node - kill -USR2 pid 正常情况下 直接kill 这个进程会杀死这个进程,但是导入heapdump这个包之后就不会,在生产环境这个命令也可以使用 然后在当前目录就会生成 heapshot文件 了,
- 打开chrome 打开开发者工具 -> 点击memory 右键 load 把生产的heapshot 导入进来就可以看到内存占用了
- 这里推荐 生产2到3个heapshot文件 ,然后分析工具 有几种可以选择
- summay 总体查看内存分布 这里分析内存泄漏 没啥用
- comparision 前后对比 主要使用这个
- containment
- statis
- 点击 comparision 之后 点击 最右边的size delta 按降序排列 可以查看变更内存差异最大的
以目前我这个举例,bitwiseTo 这个方法引用了相当多的内存,应该是闭包 引用没释放的原因
经过查看代码 ,预计是canvas这个库 调用这个方法导致的