style img change attribute javascript node.js v8

javascript - img - Nodos sin memoria



title html (3)

Me encontré con un tema curioso hoy. Esta puede ser una respuesta fácil para otros, pero me ha dejado perplejo. ¿Por qué el siguiente código causa un error de memoria?

var cur = 167772160; var bcast = 184549375; var addresses = []; while (cur <= bcast){ cur += 1; addresses.push(cur); } addresses.length addresses // memory goes from a few megs to over a gig in seconds when trying to print this

Me sale uno de estos dos errores ... el primero cuando ejecuto este código en el intérprete del nodo y el último cuando lo ejecuto a través de nodeunit:

ERROR FATAL: CALL_AND_RETRY_2 Fallo en la asignación: proceso fuera de la memoria

ERROR FATAL: Fallo en la asignación de JS: proceso sin memoria


No obtengo un error de asignación de memoria cuando ejecuto su script. ¿Cuánta RAM hay en tu sistema?

Editar Ok con las notas actualizadas del autor, puedo replicarlo.

Nodo está tratando de convertir toda su matriz a una cadena. La matriz tiene 16777216 elementos de longitud. Cada elemento contiene un número de al menos 9 dígitos de largo. Convertir eso a una cadena de 150,994,994 caracteres de longitud. Es solo una gran operación que está excediendo las capacidades de memoria del nodo.


Puede aumentar los límites predeterminados pasando --max-old-space-size=<value> que está en MB.

El ejemplo permitirá que el montón de nodos utilice hasta 4 GB (4096 megabytes ) de memoria:

node --max-old-space-size=4096 app


Sucede cuando intento acceder a la matriz. Pero conseguir la longitud no lo hace.

> var cur = 167772160; > var bcast = 184549375; > var addresses = []; > while (cur <= bcast){ ... cur += 1; ... addresses.push(cur); ... } 16777216 > addresses.length 16777216 > addresses FATAL ERROR: CALL_AND_RETRY_2 Allocation failed - process out of memory

Aquí hay otra pregunta de SO, límite de memoria en Node.js (y Chrome V8) que se relaciona con el problema con el uso de la memoria.