2012-06-30 12 views
11

dar seguimiento a este tema:la cantidad de memoria no asignar nodo para los valores nulos en matrices

Lots of null values in an array mean any harm?

Lo hice con Node.js:

arr=[] 
arr[1000]=1 
arr[1000000000]=2 
arr.sort() 

Y tengo

FATAL ERROR: JS Allocation failed - process out of memory 

Así que eso me deja con la pregunta (no pude encontrarlo en Yahoogle) cuánto mem ory está realmente asignado para una entrada nula en una matriz en el nodo. No planeo usar 1000000000 entradas, ni siquiera cerca, pero tal vez aún no valga la asignación de la memoria ...

¿Quién sabe cómo puedo verificar?

+0

Su programa funciona bien para mí en el nodo 0.6.2. – Pointy

+1

En mi opinión, esto no depende de node.js, sino únicamente de la implementación del motor de JavaScript que ejecuta JavaScript, como lo indica la pregunta a la que hace referencia. – HeatfanJohn

+0

¿Falla en 'arr.sort()'? – Eric

Respuesta

1

Por lo tanto, en resumen, node.js no asigna memoria para valores indefinidos en una matriz. El accidente que experimenté debe haber sido un error porque nadie más podría reproducirlo e instalar la última versión de node.js eliminó el problema también para mí.

-3

EDIT: Perdón por inexacto, podría no ser aplicable a JAVA ..
Todavía podría ser útil para alguien que lo necesite en otra aplicación.

una matriz de referencia es la asignación de x

por lo tanto, la asignación de arr [100000] asignará 100 kb x 4b ~ = 0,5 MB (aproximar)

y sí, sin duda, si no se va a uso todo el Array,
debe considerar un HashMap que es una estructura de datos solo para eso ...
HashMap es mejor al tener un período de búsqueda grande con una cantidad relativamente pequeña de elementos.

De cualquier forma, existen soluciones para asignar una matriz pequeña y expandirla según sea necesario, si es necesario.

+2

No, JavaScript no es como otros idiomas. Las matrices no están preasignadas. Ellos esencialmente * son * mapas hash. – Pointy

+0

Pensé en Hashes, pero aún estaría usando enteros como claves y necesito poder ordenarlos por clave (o al menos mantener su orden intacta) e iterar sobre ellos secuencialmente. Eso suena como un trabajo para arreglos en lugar de Hashes, ¿no? – EasierSaidThanDone

+0

@EasierSaidThanDone qué versión de Node estás usando? Ese código funciona bien para mí (0.6.12) – Pointy

Cuestiones relacionadas