hola buenas! soy nuevo en el foro! y quería hacer una consulta, lo que pasa es que estoy atascado con un ciclo For en cual tiene un Ramdom que me genera números desde 1 a 100.000.000 y los guardar en un ArrayList, y al ejectuarlo el programa funciona unos 5 segundos y luego queda pegado
este seria el codigo.
long numeroGenerado2;
int i;
for(i = 0; i<100000000; i++){
numeroGenerado2 = (long)Math.floor(Math.random()* (100000000-0+1)+0);
listaNumeros.add(numeroGenerado2);
}
probe con variables de tipo int pero aun así pasa lo mismo.
espero alguien me pueda ayudar ;D
primero tomando en cuenta que estás haciendo una operación que en memoria debe pesar lo siguiente
long = 64bit = 8byte
entonces son 800.000.000byte, dividiendo entre 1000 por comodidad, con un error de 2.4%
800.000.000byte
800.000KB
800MB
no se demasiado de java, pero creo que tienes que ajustar la memoria para que la maquina virtual pueda usar 1GB de ram
otros consejos:
int es un numero de 32 bits en java, es capaz de soportar un valor de poco más de 2mil millones positivo y negativo
otra cosa que recomiendo es que primero crees el array para que se reserve la memoria, de otra manera se tienes que reubicar la memoria cuando el array quede sin espacio de cola
por otro lado no se si se pueda manejar por métodos normales :s es un array MUY grande
Deberías ver si realmente buscas usar tanta RAM. Quizás prefieras ir guardando los valores en un archivo. Todo depende de lo que busques claro, pero es bastante bestia. Ya viste los datos que te dió engel lex.