Jak mogę monitorować wykorzystanie pamięci przez Node.js?
javascript
node.js
memory
fsiaonma
źródło
źródło
Odpowiedzi:
node-memwatch : wykrywa i znajduje wycieki pamięci w kodzie Node.JS. Sprawdź ten samouczek Śledzenie wycieków pamięci w Node.js.
źródło
Wbudowany moduł procesu ma metodę,
memoryUsage
która zapewnia wgląd w wykorzystanie pamięci przez bieżący proces Node.js. Oto przykład z Node v0.12.2 w systemie 64-bitowym:W tym prostym przykładzie widać, że przydzielenie tablicy 10 mln elementów konsumenci wynosi około 80 MB (spójrz na
heapUsed
).Jeśli spojrzeć na kod źródłowy V8 (
Array::New
,Heap::AllocateRawFixedArray
,FixedArray::SizeFor
), to zobaczysz, że pamięć używana przez tablicy jest wartością stałą plus długość pomnożona przez wielkość wskaźnika. Ta ostatnia zajmuje 8 bajtów w systemie 64-bitowym, co potwierdza, że zaobserwowana różnica pamięci wynosząca 8 x 10 = 80 MB ma sens.źródło
--expose-gc
tejgc
funkcji?--expose-gc
zaprocess.memoryUsage()
.gc()
(require--expose-gc
) został użyty w odpowiedzi do deterministycznego wyzwalania czyszczenia pamięci, aby łatwiej było zobaczyć, jakieprocess.memoryUsage
raporty.Ponadto, jeśli chcesz poznać pamięć globalną, a nie proces węzłowy:
Zobacz dokumentację
źródło
Oryginalny memwatch jest zasadniczo martwy. Zamiast tego wypróbuj memwatch-next , który wydaje się działać dobrze w nowoczesnych wersjach Node.
źródło
W systemie Linux / Unix (uwaga: Mac OS to Unix) użyj
top
i naciśnij M ( Shift+M ), aby posortować procesy według użycia pamięci.W systemie Windows użyj Menedżera zadań.
źródło
Applications > Utilities
a znajdzieszActivity Monitor
aplikację. Ten jest odpowiednikiem Menedżera zadań. OS X również matop
polecenie.htop
zamiast góry w systemie Linux. Jest dużo lepiej.