Как выяснить утечку памяти в процессе узла - PullRequest
0 голосов
/ 02 июня 2018

В моем приложении nodejs происходит утечка памяти, поэтому я пытался использовать heapdump для сравнения изменений памяти, к сожалению, память не изменяется в headdump, но мой процесс nodejs протекает из памяти. Так что я думал, что native-модули могут быть однимвиновник, тогда я использовал mtrace, чтобы понять это.Но я не мог понять, что модуль "/lib64/libstdc++.so.6" увеличивает размер.

Может ли кто-нибудь помочь дать мне несколько советов по инструментам или способам выяснить утечку памяти, которая не происходит в самой куче.

Многие ценят.

1 Ответ

0 голосов
/ 08 июня 2018

Я бы посоветовал запустить ваше приложение node.js с ограниченным объемом динамической памяти (например, --max_old_space_size = 100) и дождаться нехватки памяти.

Если это произойдет, установите node-oom-heapdump и запустите процесс заново.Когда ему не хватает памяти, автоматически генерируется heapdump, показывая вам виновника.Если этого не происходит, утечки памяти нет.

Причина, по которой ваш heapdump не показывает повышение, возможно, из-за сборщика мусора;перед тем, как сделать кучу мусора, включается сборщик мусора. Так что я не уверен, что у вас действительно есть утечка;если сборщик мусора исправляет использование кучи, утечки нет.

...