Ir ao conteúdo

ArrayList limite e erro de memória


MarvinRio

Posts recomendados

Postado

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 mensagem 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. :)

Postado

Não entendo muito bem com essas coisa do Eclipse (se for o caso)

1- Porém creio que não seja falta de memória da parte do seu PC

2- Creio que você possa trabalhar com essa quantidade. Por teste faz uma array com 500.000 um número menor pra ver se não irá ficar muito lento, e vá testando até uma quantidade que não fique lento.

3 - Depende (eu acho), porém creio que não irá afetar muito, mas pode criar uma diferença sim.

algo que você pode testar é o proprio compilador, quando finalizado o "RUN" do código, ele informa quanto tempo demorou pra atingir o final, isso que você pode testar, pra ver quanto tempo demorou pra chegar até o ultimo registro da array.

Ou seja, coloque uma instrução pra finalizar a compilação

acho que um


System.exit(0) ~ Algo assim (não me recordo agora)

ou

dispose();

você pode ver pelo console do próprio eclipse, quanto tempo demorou pra atingir o fim da array

5 - Não sei direito, não entendo muito como funciona a Array, mas, creio que, ele tem um limite sim, mesmo que não teja explicito isso. Mas acho que tem.

Postado

Boa Noite, gostaria de dar a todos a dica de não usar ArrayList para tantos elementos.

Já tentou usar outros métodos para armazenar dados?

Fica aqui links de dois:

Árvores binárias:http://pt.wikipedia.org/wiki/%C3%81rvore_bin%C3%A1ria

Neste a cada vez que dobra o número de elementos aumenta em 1 ciclo a busca, e para inserir é quase instantâneo.

Outras:

http://pt.wikipedia.org/wiki/Estrutura_de_dados

Outra coisa, é sempre bom você procurar por soluções diferentes, imagina se programas poderosos utilizassem array? Apenas uma dica amigo.

Se tiver duvidas eu tenho uns arquivos para esclarecer.

Postado
Não entendo muito bem com essas coisa do Eclipse (se for o caso)

1- Porém creio que não seja falta de memória da parte do seu PC

2- Creio que você possa trabalhar com essa quantidade. Por teste faz uma array com 500.000 um número menor pra ver se não irá ficar muito lento, e vá testando até uma quantidade que não fique lento.

3 - Depende (eu acho), porém creio que não irá afetar muito, mas pode criar uma diferença sim.

algo que você pode testar é o proprio compilador, quando finalizado o "RUN" do código, ele informa quanto tempo demorou pra atingir o final, isso que você pode testar, pra ver quanto tempo demorou pra chegar até o ultimo registro da array.

Ou seja, coloque uma instrução pra finalizar a compilação

acho que um


System.exit(0) ~ Algo assim (não me recordo agora)

ou

dispose();

você pode ver pelo console do próprio eclipse, quanto tempo demorou pra atingir o fim da array

5 - Não sei direito, não entendo muito como funciona a Array, mas, creio que, ele tem um limite sim, mesmo que não teja explicito isso. Mas acho que tem.

tenta:

String textoDigitado = " blá blá blá"; 
String sql = "select depatamentoFuncionário from funcionario where codigo="[COLOR="Red"]+ textoDigitado;[/COLOR]

Valeu mesmo mano !

Muito obrigado !^_^

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!