Estouro de heap

5 respostas
DorPho

Não entendo pq esta dando um estouro de pilha,

Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space, no método abaixo...

//retorna um ArrayList contendo uma lista de arquivos jpg e suas respectivas info.
    public ArrayList<Arquivo> consultaArquivo(String caminho){
        
        File arquivo = new File(caminho);
        //filtro, capturando somente arquivos com extensao .jpg, .jpeg, .bmp, .gif   
        FilenameFilter filtro = new FilenameFilter(){
            public boolean accept(File arquivo, String name) {
                return name.endsWith(".jpg")
                     ||name.endsWith(".bmp")
                     ||name.endsWith(".jpeg")
                     ||name.endsWith(".gif");                     
            }
        };
        
        //resultado recebe lista de arquivos .jpg contidos em um diretório.
        this.arquivosDiretorio = arquivo.listFiles(filtro);
            
            if(arquivosDiretorio.equals(null)){
               JOptionPane.showMessageDialog(null, "Nenhum arquivo JPG disponível neste diretório");               
            }else{
               for(int i=0;i<arquivosDiretorio.length;i++){
                   
                   Arquivo registro = new Arquivo();
                  
                   registro.setNome(arquivosDiretorio[i]);
                   registro.setTamanho(arquivosDiretorio[i]);
                   registro.setDimensao(arquivosDiretorio[i]);
                   registro.setExtensao(arquivosDiretorio[i]);                   
                   
                   this.arrayFile.add(registro);
               }
            }            
            return arrayFile;
    }

O seguinte código retorna um arraylist de objetos File() em um array, inserindo a cada linha uma imagem existente em um diretório esolhido pelo usuário... o problema é qdo o mesmo escolhe um diretório com dezenas de imagens... ocorre o estouro da heap...

Tentei colocar a váriavel arrayFile como variavel de instância, mais mesmo assim ocorre o erro

Alguem pode me ajudar? um abraço

5 Respostas

DorPho

Será que ninguem pode me ajudar?

Ironlynx

DorPho Vc não tá tentando listar zilhões de arquivos né?
Vamos considerar que a memória inicial disponível para seus objetos está curta(o heap space), aí é só voce aumentar:
-Xmx512m //aumenta para 512MB

Lembrando que vc pode pôr um Xms para o tamanho da heap inicial.
Mais aqui: http://www.informix-zone.com/node/46

DorPho

Ironlynx:
DorPho Vc não tá tentando listar zilhões de arquivos né?
Vamos considerar que a memória inicial disponível para seus objetos está curta(o heap space), aí é só voce aumentar:
-Xmx512m //aumenta para 512MB

Lembrando que vc pode pôr um Xms para o tamanho da heap inicial.
Mais aqui: http://www.informix-zone.com/node/46

Primeiramente, valeu pela ajuda…

Seguinte… preciso carregar um diretório com mais ou menos umas 150/200 imagens para um treinamento de uma rede neural… no entanto cada imagem não ultrapassa os 200k…

Como faço este comando no netbeans??

Um abraço, valeu!

Fernando_Generoso_da

O problema deve estar na criação de 200 objetos…meio estranho…

Os parâmetros citados são parâmetros para a VM, portanto, independe de IDE. Apenas tem que ver onde, na tua IDE, te possibilita inserir parâmetros para a JVM.

Fernando

DorPho

Não vejo nd estranho… apenas listo cada arquivo .jpg/.gif/.jpeg/.bmp de um diretório em uma JTable… e qdo tento selecionar um diretório com quantidade inferior (10/20 imagens) ele exibi tranquilo… mais qdo tento exibir mais ele pira…

I don’t know!

Um abraço!

Criado 22 de janeiro de 2009
Ultima resposta 26 de jan. de 2009
Respostas 5
Participantes 3