MarvinRio 0 Denunciar post Postado Junho 16, 2013 Opa pessoal ! É o seguinte, tenho uma aplicação na qual eu pus em média 600.000 itens em um ArrayList, mas quando eu uso o método elementoArray.add("novoElemento"); , ele me retorna uma menssagem de erro de "Heap Size" e outra dessa forma " Too many constants, the constant pool for wold exceed 65536 entries" no array, de certa forma esta segunda eu consegui sanar com o método ensureCapacity que aumenta o tamanho do array. O foco para mim é o Heap size, que eu já pesquisei, e vi que está relacionado a memória que o Java utiliza, eu tenho 3.5 GB de RAM, já aumentei no Eclipse a tolerância mínima e máxima de memória e não adiantou, vou fazer as perguntas numeradas, aí, as que souberem é só responderem com os números ok ? vamos lá ! : 1- Preciso de mais memória no meu PC ? 2- A minha memória é suficiente ? Dá para trabalhar com essa quantidade de objetos no ArrayList ? 3- Se eu compilar este código com esta quantidade de informações, a pessoa que for rodar meu código também vai ter que ter uma boa quantidade de memória ? Ou essa exigência é só para mim que estou criando o código ? 4 - A pergunta 3 não procede ? 5 - Como trabalhar em JAVA com ArrayList sem problemas de memória e sem limite algum ? Bom, é isso aí, agradeço muito pela paciência de vocês, bom final de semana. Compartilhar este post Link para o post Compartilhar em outros sites
Edultra 13 Denunciar post Postado Julho 1, 2013 1 - Sim 2 - da pra trabalhar o problema é carregar esta quantidade na memória geralmente você utiliza outros métodos para trabalhar com uma quantidade de dados como esta. 3 - Com certeza, se esta armazenando tudo em memória, logo ela vai ter que ter memória para armazenar. 4 - Procede. 5 - se não me engano se você utilizar LinkedList não terá este problema, pois faz um uso mais eficiente da memória. Conforme falei vai do que vc ta tentando fazer... esta importando de um arquivo de texto para uma lista para depois inserir em um banco? não da para ir lendo os dados do arquivo de texto populando um objeto e inserindo no banco? ou é uma consulta no banco de dados que retorna uma lista deste tamanho? se for uma consulta no banco não da para utilizar paginação? limitando a quantidade de dados ou utilizando uma paginação por linhas retornadas do banco, tipo de X até X? Compartilhar este post Link para o post Compartilhar em outros sites