我一直在寻找节点程序中一个非常糟糕的内存泄漏。
我正在使用 memwatch 模块 HeapDiff() 来尝试识别有问题的对象。
HeapDiff 的报告显示了 details 数组中的两个可疑元素(“Array”和“String”,每个元素都有相当大的增长。
我正式迷路了,不知道如何缩小可能的罪魁祸首。有几十个 google-able howtos,但对我来说没有任何意义。有问题的程序使用了很多 3rd 方模块,包括载体、出队和 mqtt。这是 318 行代码,所以我没有发布它。
我会很感激任何关于我下一步应该做什么的指示......
这是 memwatch HeapDiff 转储的摘录:
{
"before": {
"nodes": 25312,
"time": "2014-09-01T10:59:24.000Z",
"size_bytes": 3596320,
"size": "3.43 mb"
},
"after": {
"nodes": 125705,
"time": "2014-09-01T11:14:24.000Z",
"size_bytes": 20255728,
"size": "19.32 mb"
},
"change": {
"size_bytes": 16659408,
"size": "15.89 mb",
"freed_nodes": 674,
"allocated_nodes": 101067,
"details": [
{
"what": "Array",
"size_bytes": 348440,
"size": "340.27 kb",
"+": 1592,
"-": 295
},
{
"what": "String",
"size_bytes": 12580056,
"size": "12 mb",
"+": 50329,
"-": 20
}
]