Perché le installazioni di Node.js usano così tanta RAM?
L'installazione di Node.js non usa la RAM. Tuttavia, il lancio del runtime (cioè l'esecuzione di un'app) ovviamente lo fa. Nella mia esperienza, Node non consuma davvero troppa RAM.
Tuttavia, ci sono molti moduli scritti male e applicazioni progettate male. Se il programmatore non capisce come Node sfrutta la memoria, allora potrebbe consumare molta RAM. Questo è abbastanza comune nelle applicazioni Electron (che usano Node), ma in genere non è colpa del runtime di Node... è tipicamente una cattiva programmazione.
Anche una Ferrari sarà lenta se il pilota non sa cosa sta facendo.
Aggiornamento (basato sui commenti)
Quando si esegue npm install o un comando npx, viene eseguita la logica npm. In altre parole, non è Node, ma npm sta usando Node. La logica di npm è relativamente semplice ad alto livello.... trova tutte le dipendenze e le loro sottodipendenze all'interno del file package.json. Quindi, sta solo analizzando il file e scaricando i moduli come necessario. Npm cerca di memorizzare nella cache il più possibile, ma ci sono delle limitazioni poiché ogni progetto è trattato in modo indipendente. In altre parole, non ci sono moduli condivisi tra i progetti.
Prima di dire "ma i moduli globali?!", è importante capire che i moduli globali servono principalmente per installare le utilità della CLI. Non fanno parte del file package.json e quindi non sono referenziati quando si fa un'installazione npm. Sono referenziati dal sistema, non dall'applicazione.
Personalmente, non ho visto troppi ambienti che consumano una tonnellata di RAM, ma spesso vedo progetti con un numero enorme di moduli. L'impronta complessiva è enorme - a volte oltre 50MB. Ci sono cose che puoi fare al riguardo (vedi Npm Needs a Personal Trainer - Author.io), ma sta ai singoli autori mantenere moduli più piccoli/efficienti. Questo è in realtà il motivo per cui non uso strumenti come webpack.... troppi sviluppatori, specialmente gli sviluppatori Jr, installano solo moduli senza considerare la dimensione dell'applicazione. Si tratta di accaparramento di moduli, e fa male a tutti.
Questo è un problema della comunità, che non è privo di giustificazione, dato che la comunità è forte di 8M+ persone. La cosa migliore da fare è semplicemente capire cosa fa npm per voi ed essere perspicaci sui pacchetti che scegliete di usare.
Articoli simili
- Perché i browser web usano così tanta RAM?
- Perché i Chromebook hanno così tanta RAM (16GB) quando molti portatili Windows hanno ancora 4GB di RAM?
- Il mio portatile ha 32GB di RAM ma Chrome usa oltre 15GB di memoria, come mai Chrome usa così tanta memoria e come posso ridurre il suo consumo?
- Perché il mio Macbook si surriscalda e usa così tanta CPU ed energia quando è su YouTube?