Я только что исправил утечку памяти в моем приложении-узле, который был в куче узла. Я профилировал это с помощью Google Profiler и смог исправить утечку памяти.Утечка памяти в Node.js вне кучи?
Теперь мое приложение работает некоторое время, и я видел, что размер кучи довольно постоянный. Нет утечки памяти больше. Но когда я проверяю бесплатную ОЗУ моего сервера, я вижу уменьшение ... Когда я перезапускаю свой сервер узлов, оперативная память до нормальной бесплатной ОЗУ. Теперь я слышал о том, что Node.js может сохранять объекты и вещи за пределами кучи. Я думаю, что именно здесь происходит утечка памяти.
Как я могу узнать, что занимает память? Не может ничего профилировать, или я могу?
Я использую:
Node.js: v0.8.18 и Socket.io: v0.9.13
Некоторые другие узловые модули, которые я использую являются: nodetime, heapdump (удалит это, тем не менее), jquery, crypto, request и querystring.
Некоторые графики:
Free OS memory и Node RSS и Heap used
Как вычисляется 'Свободная память ОС? Какие еще службы работают на этом сервере? Какая ОС? –
Я не знаю, как Nodetime вычисляет это, если честно. ОС - linux, Centos 5. Другими службами, запущенными на этом сервере, являются Apache и MySQL. Я слышал, что Linux использует всю память для кэширования, как вы думаете, может быть, это и есть причина? – Martin
возможно, также может быть MySQL кэширование данных в памяти или кеширование файлов. Если вы не сможете повторно использовать эту память при перезагрузке приложения, это должно быть приемлемым поведением. –