consulta ciclo for 100.000.000 de datos en un arraylist

Iniciado por neomadara, 1 Mayo 2014, 19:36 PM

0 Miembros y 1 Visitante están viendo este tema.

neomadara

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

engel lex

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
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

ivancea96

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.