Para resolver un desafío de codificación que involucra números primos grandes, primero intento crear una matriz de longitud 999999999 con cada elemento que tenga el valor "verdadero". Sin embargo, cuando intento crear esta matriz, recibo el error "ERROR FATAL: error en la asignación de tamaño de tabla no válido: memoria de JavaScript sin memoria".
Probé dos formas de crear el Array y sucedió en ambas ocasiones.
let numbers = Array(999999999); for (let i = 0; i < numbers.length; i++) { numbers[i] = true; }
let numbers = []; for (let i = 0; i < numbers.length; i++) { numbers.push(true); }
Intenté usar el nodo --max-old-space-size para aumentar el límite de memoria hasta 5 GB, pero aún no funciona.
He leído que la longitud máxima de una matriz en Javascript es 4294967296, que es significativamente mayor que 999999999, por lo que estoy un poco confundido sobre por qué no funciona.
Parece que puedo crear el Array (999999999), el error ocurre cuando intento asignar el valor verdadero a cada elemento.
Cualquier consejo sería muy apreciado :)
5 GB (o GiB) no es suficiente.
Un booleano en una matriz en node.js necesita un promedio de 9,7 bytes de memoria. . Entonces, necesitaría 999,999,999 * 9.7 = alrededor de 9.7 GB (~ 9.03 GiB) de memoria, pero otras cosas vivirán en este espacio también, así que para estar seguro, asignaría alrededor de 11 GiB para ello.
Sin embargo, tener una matriz de este tamaño probablemente nunca sea una buena idea. Debería pensar en una forma diferente de abordar su problema. El objetivo del desafío es probablemente que encuentre una solución inteligente que no necesite bucles sobre mil millones de cosas.
compañero. Puedes pensar en eso como si fuera un bucle infinito. Si haces algo que requiere mucha memoria, entonces es una mala idea. Necesitas encontrar otro enfoque. Atentamente