Я преследовал довольно плохую утечку памяти в узловой программе.node.js memwatch преследует утечку памяти
Я использую модуль memwatch HeapDiff(), чтобы попытаться идентифицировать оскорбительные объекты.
отчет HeapDiff показывает два подозрительных элементов в деталях массива, («массив» и «String», каждый из которых значительно выросли.
Я официально потерял и не имеют ни малейшего представления о том, как сузить возможный преступники Есть десятки google-способных howtos, но ни один из них не имеет для меня никакого смысла. В рассматриваемой программе используется довольно много сторонних модулей, включая операторский, dequeue и 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
}
]
Строка 12mb кажется очень странной. Я бы поискал любую функцию, где вы добавляете символы в строку, которая находится в закрытии. Я не могу больше помочь без кода. –