2011-08-25 12 views
43

In molti punti del web, vedrete:limite di memoria in Node.js (e Chrome V8)

Qual è il limite di memoria su un processo di nodo?

e la risposta:

Attualmente, per v8 default ha un limite di 512 MB di memoria nei sistemi a 32-bit, e 1gb nei sistemi a 64 bit. È possibile aumentare il limite impostando --max-old-space-size fino a un massimo di ~ 1gb (32-bit) e ~ 1.7gb (64-bit), ma si consiglia di suddividere il singolo processo in più worker se stai colpendo limiti di memoria.

qualcuno può confermare questo è il caso come node.js sembra aggiornare frequentemente ??? * E, ancora più importante, sarà il caso nel prossimo futuro ??? *

voglio scrivere codice javascript che potrebbero avere a che fare con 4GB di oggetti JavaScript (e la velocità potrebbe non essere un problema)

Se non posso farlo in nodo, finirò per fare in java (su una macchina a 64 bit) ma preferirei non ...

+5

In tutto il mondo potrebbero essere necessari 4 GB in oggetti JS? –

+23

@ dominic-barnes: immagini. Film. Diamine, importa? Qualcosa succederà, un giorno o l'altro. Un MMORPG, per esempio. Sono d'accordo sul fatto che le limitazioni sono brutali, ed è stato un grave errore del programmatore usare gli int per 32 bit per l'indirizzamento nella bozza originale di v8. –

+0

Se si desidera avere 4 GB di dati, non è possibile farlo come oggetti JS. Forse questo link può aiutare? https://developer.mozilla.org/en/javascript_typed_arrays – goatslacker

risposta

1

Sembra un vero. Quando ero stato tentato di allocare una stringa da 50 Mb nel buffer var buf = new Buffer(50*1024*1024); ho ricevuto l'errore fatale FATAL ERROR: CALL_AND_RETRY_2 Allocation failed - process out of memory. Ho risolto circa 457 Mb di utilizzo della memoria del nodo nel monitor di processo.

16

Questa è stata una grande preoccupazione per alcuni che utilizzano Node.js e ci sono buone notizie. Il nuovo limite di memoria per V8 è ora sconosciuto (non testato) per 64 bit e generato fino a 32 bit di spazio di indirizzamento in ambienti a 32 bit.

Read more here: http://code.google.com/p/v8/issues/detail?id=847

+2

Ho ancora (anche con 64 bit) necessario specificare che voglio più memoria con l'opzione --max-old-space = 10000 (per 10GB), altrimenti ricevo "FATAL ERROR: CALL_AND_RETRY_2 Allocation failed - process out of memory "a ~ 1,7 GB di utilizzo della memoria in Task Manager su Windows. –

+1

Sto usando 8gb + facilmente in v7.8.0 - vorrei solo che la mia macchina avesse più RAM – JoeRocc

5

sto correndo un proc ora su Ubuntu Linux che è una perdita di memoria definito e nodo 0.6.0 sta spingendo 8gb. Pensa che è gestito :).

-5

nodo --max-old-space-size flag = chrome

+4

Questa non è una risposta. –

Problemi correlati