工具:

node-inspector

pomelo-cli

chrome


步骤

  1. 通过pomelo-cli中的dump memory,导出当前服务器的内存堆栈文件:dump1.heapsnapshot。

  2. 服务器运行指定模块一段时间后,导出堆栈文件:dump2.heapsnapshot。

  3. 用chrome 读取堆栈文件:打开开发者工具->Profiles->Load->选择堆栈文件。先load 前面的dump1,再Load dump2。

  4. 在Profiles的左侧会有份文件列表,重点看两份的差异:选择dump2 -> 点击顶部栏搜索框左侧->选择Object Allocated between dump1 and dump2

  5. 查看每组内存占用。

  6. 分析内存占用最多的对象。js有大量匿名方法,目前没发现搜索内容的方法,只能搜方法名。所以只能自己一个个打开去看,才知道那是啥。。。囧(这个时候才发现方法命名真的很重要)

  7. 基本上先按大小排序,然后分析几个关键的大头,问题一般都在这。