2011-08-25 31 views
43

En muchos lugares en la web, verá:límite de memoria en Node.js (y V8 de Chrome)

¿Cuál es el límite de memoria en un proceso de nodo?

y la respuesta:

Actualmente, por v8 por defecto tiene un límite de memoria de 512 MB en sistemas de 32 bits, y 1 GB en sistemas de 64 bits. El límite puede aumentarse configurando --max-old-space-size a un máximo de ~ 1gb (32-bit) y ~ 1.7gb (64-bit), pero se recomienda que divida su proceso individual en varios trabajadores si estás alcanzando los límites de memoria.

alguien puede confirmar que este es el caso, ya que node.js parece actualizar con frecuencia ??? * Y, lo que es más importante, ¿será el caso en un futuro próximo? *

Quiero escribir código JavaScript que podría tener que lidiar con 4 GB de los objetos JavaScript (y velocidad podría no ser un problema)

Si no puedo hacerlo en el nodo, voy a terminar haciendo en java (en una máquina de 64 bits) pero preferiría no ...

+5

Lo que en el mundo podría tomar hasta 4 GB de objetos JS? –

+23

@ dominic-barnes: Imágenes. Películas. Diablos, ¿Importa? Algo lo hará, algún día. Un MMORPG, por ejemplo. Estoy de acuerdo en que las limitaciones son brutales, y fue un grave error de programador utilizar las entradas de 32 bits para abordar en el borrador original de v8. –

+0

Si desea tener 4 GB de datos, no puede hacerlo como objetos JS. Tal vez este enlace puede ayudar? https://developer.mozilla.org/es/javascript_typed_arrays – goatslacker

Respuesta

1

Parece un verdadero. Cuando me trataron de asignar una cadena de 50 Mb en el buffer var buf = new Buffer(50*1024*1024); recibí el error fatal FATAL ERROR: CALL_AND_RETRY_2 Allocation failed - process out of memory. He arreglado algo alrededor de 457 Mb de uso de memoria nodejs en el monitor de proceso.

16

Esto ha sido una gran preocupación para algunos que usan Node.js, y hay buenas noticias. El nuevo límite de memoria para V8 ahora es desconocido (no probado) para 64 bits y elevado a tanto como el espacio de direcciones de 32 bits lo permite en entornos de 32 bits.

leer más aquí: http://code.google.com/p/v8/issues/detail?id=847

+2

Todavía (incluso con 64 bits) necesito especificar que quiero más memoria con la opción --max-old-space-size = 10000 (para 10GB), de lo contrario obtengo "FATAL ERROR: CALL_AND_RETRY_2 Asignación fallida: proceso sin memoria "a ~ 1.7 GB de uso de memoria en el administrador de tareas en Windows. –

+1

Estoy usando 8gb + fácilmente en v7.8.0 - solo desearía que mi máquina tuviera más memoria RAM – JoeRocc

5

estoy corriendo un proc ahora en Ubuntu Linux que tiene una pérdida de memoria definida y el nodo 0.6.0 está empujando 8gb. Creo que se maneja :).

-5

nodo bandera --max de edad-espacio-size = cromo

+4

Esto no es una respuesta. –

Cuestiones relacionadas