Z oficjalnej dokumentacji ( źródło ):
process.memoryUsage ()
Zwraca obiekt opisujący użycie pamięci przez proces Node mierzony w bajtach.
var util = require('util'); console.log(util.inspect(process.memoryUsage()));
To wygeneruje:
{ rss: 4935680, heapTotal: 1826816, heapUsed: 650472 }
heapTotal i heapUsed odnoszą się do użycia pamięci w wersji 8.
Co dokładnie oznacza rss , heapTotal i heapUsed ?
To może wydawać się banalne pytanie, ale szukałem i do tej pory nie mogłem znaleźć jasnej odpowiedzi.
RSS to rezydentny rozmiar zestawu , czyli część pamięci procesu przechowywana w pamięci RAM (w przeciwieństwie do przestrzeni wymiany lub części przechowywanej w systemie plików).
Sterty jest częścią pamięci, z którego nowo przydzielone obiekty będą pochodzić z (myśleć
malloc
w C, lubnew
w JavaScript).Możesz przeczytać więcej o stercie w Wikipedii .
źródło
heapTotal
iheapUsed
?heapTotal
to całkowita przydzielona przestrzeń sterty przez bazowy silnik V8 dla dynamicznych alokacji.heapUsed
jest pamięcią używaną w tej całkowitej przestrzeni. Oba są zarządzane przez V8 i mogą rosnąć / zmniejszać się w razie potrzeby.Dokumentacja Node.js opisuje to w następujący sposób:
Wszystkie wymienione wartości są wyrażone w bajtach. Tak więc, jeśli chcesz je tylko wydrukować, prawdopodobnie chcesz przeskalować je do MB:
const used = process.memoryUsage(); for (let key in used) { console.log(`Memory: ${key} ${Math.round(used[key] / 1024 / 1024 * 100) / 100} MB`); }
To da ci wyjście takie jak:
Memory: rss 522.06 MB Memory: heapTotal 447.3 MB Memory: heapUsed 291.71 MB Memory: external 0.13 MB
źródło
Zróbmy to na przykładzie
Poniższy przykład pokaże, jak wzrost użycia pamięci faktycznie zwiększy
rss
iheapTotal
const numeral = require('numeral'); let m = new Map(); for (let i = 0; i < 100000; i++) { m.set(i, i); if (i % 10000 === 0) { const { rss, heapTotal } = process.memoryUsage(); console.log( 'rss', numeral(rss).format('0.0 ib'), heapTotal, numeral(heapTotal).format('0.0 ib') ) } }
Running Powyższe da ci coś takiego:
rss 22.3 MiB 4734976 4.5 MiB rss 24.2 MiB 6483968 6.2 MiB rss 27.6 MiB 9580544 9.1 MiB rss 27.6 MiB 9580544 9.1 MiB rss 29.3 MiB 11419648 10.9 MiB rss 29.3 MiB 11419648 10.9 MiB rss 29.3 MiB 11419648 10.9 MiB rss 32.8 MiB 15093760 14.4 MiB rss 32.9 MiB 15093760 14.4 MiB rss 32.9 MiB 15093760 14.4 MiB
To wyraźnie pokazuje, jak użycie zmiennej i ciągłe zwiększanie wymaganej przez nią przestrzeni zwiększa heapTotal i odpowiednio Resident Set Size (
rss
)źródło