Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space

4 respostas
JavaX_JavaX

Boa Tarde!

Galera , alguem pode me dar uma ajuda de como resolver o problema abaixo

Att Javax

Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
        at java.util.Properties.load0(Properties.java:329)
        at java.util.Properties.load(Properties.java:325)
        at java.util.PropertyResourceBundle.<init>(PropertyResourceBundle.java:111)
        at java.util.ResourceBundle$Control.newBundle(ResourceBundle.java:2428)
        at java.util.ResourceBundle.loadBundle(ResourceBundle.java:1406)
        at java.util.ResourceBundle.findBundle(ResourceBundle.java:1365)
        at java.util.ResourceBundle.findBundle(ResourceBundle.java:1292)
        at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1234)
        at java.util.ResourceBundle.getBundle(ResourceBundle.java:787)
        at org.apache.derby.iapi.services.i18n.MessageService.getBundleWithEnDefault(Unknown Source)        at org.apache.derby.iapi.services.i18n.MessageService.getBundleWithEnDefault(Unknown Source

4 Respostas

L

pode colocar a parte do código que está causando isso?

pelo que dá pra perceber, ou vc está tentando abrir um arquivo de properties muito grande…ou voce está tentando carregar muitos registros do derby…

JavaX_JavaX

leopoldof:
pode colocar a parte do código que está causando isso?

pelo que dá pra perceber, ou vc está tentando abrir um arquivo de properties muito grande…ou voce está tentando carregar muitos registros do derby…

Bom dia Leopoldof , primeiramente Obrigado pela atenção , e é isso mesmo que vc disse , estou tentando carregar um arquivo enorme no derby

na verdade esse arquivo não representa nem a minima parte do que eu preciso carregar , mais segue o codigo abaixo se vc puder me ajudar

fico muito grato Att Javax , segue o Codigo Abaixo

/** 
Metodo Append Para Carregar As Tabelas Com os Dados de Remissao              <p>
1 Argumento                                                                  <p>
1º Tipo String                                                               <p>
Exemplo de Uso =  Append(Arquivo_Remissao);                                  <p>
 */
 public String AppendRemissao(File[] Arquivo_Remissao){    
   // Começo Conecta Banco de Dados em Run Time , Em tempo de Execução
      final BancoDao conexao = new BancoDao();                                     //Estancia da Classe BancoDao Para Criar o Objeto Conexãoo
      conexao.connect();                                                           //Conexão com o Banco
      //System.out.println("1 = "+conexao.getDatabaseLocation());                    // Verifica Local de Criação do Banco
      //System.out.println("2 = "+conexao.getDatabaseUrl());                         // Verifica Driver
   // Final Conecta Banco de Dados em Run Time , Em tempo de Execução

  for (int i = 0; i < Arquivo_Remissao.length; i++) {

    try{

     BufferedReader bufReader = new BufferedReader(new FileReader(Arquivo_Remissao[i]));

      while ((dadosRemissao = bufReader.readLine()) != null) {
        dados     =  "";
        tabela    = "Remissao"+Space(1);
        campos    =  "Linhas";
        dados     =  "'"+dadosRemissao.trim()+"'";      
      
        if (dados.length() > 502){
         String[] Resposta = {"Sim", "Não"};    
          Verifica = JOptionPane.showOptionDialog(null, "Linha Maior que a Tupla do Banco Deseja Continuar ?", "Erro Por favor Verificar", 0 ,JOptionPane.QUESTION_MESSAGE, null, Resposta, Resposta[0]);
          if(Verifica == 1 ){
           System.exit(0);
          }   
        }
 
        //System.out.println(dados);
        
         conexao.executeSQL_BdAppend("Insert Into "                             // Comando Sql
         +"App."                                                                // Squema Da Tabela
         +""+ tabela +""                                                        // Tipo de Tabela
         +"("+ campos +")"                                                      // Nomes dos Campos Da tabela
         +" values (" + dados + ")");                                           // Dados a ser Inseridos Nos Campos Da tabela
      }
      bufReader.close();
      bufReader = null;
    }
    catch (IOException erro){
    //informacao = erro.getMessage();
    }
  } // end for

  return dadosRemissao;
 }

Oi se alguem puder ajudar encontrei a onde está o problema , mas ainda não sei como resolver

problema esta no metodo que uso para carregar o banco

conexao.executeSQL_BdAppend("Insert Into "                             // Comando Sql
         +"App."                                                                // Squema Da Tabela
         +""+ tabela +""                                                        // Tipo de Tabela
         +"("+ campos +")"                                                      // Nomes dos Campos Da tabela
         +" values (" + dados + ")");                                           // Dados a ser Inseridos Nos Campos Da tabela

ou seja

public void executeSQL_BdAppend(String instrucao) {
       try {
        statement = dbConnection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
        statement.executeUpdate(instrucao);
       }
       catch(SQLException sqlex){
       //System.out.println("InstruçãoSql = "+instrucao);
       JOptionPane.showMessageDialog(null,"nao foi possivel executar = "+sqlex
       +"o sql passado foi = "+ instrucao);
       }
    }
L

Pelo que deu pra perceber… o conteúdo do seu arquivo deve estar numa linha só… e como vc lê seu arquivo por linha… carrega tudo duma vez só…

Ou na hora de gerar esse arquivos, vc insere quebras de linha e adiciona linha a linha ou a cada 10 linhas ou 20…aí vai depender da quantidade de caracteres que tem a linha para não dar mais esse estouro de memória

Ou vc armazena esse arquivo em bytes e não em uma string como está tentando fazer…

O que o derby está dizendo pra vc é que ele não consegue guardar a bíblia inteira num campo de uma tabela em somente num registro… he he he

JavaX_JavaX

leopoldof:
Pelo que deu pra perceber… o conteúdo do seu arquivo deve estar numa linha só… e como vc lê seu arquivo por linha… carrega tudo duma vez só…

Ou na hora de gerar esse arquivos, vc insere quebras de linha e adiciona linha a linha ou a cada 10 linhas ou 20…aí vai depender da quantidade de caracteres que tem a linha para não dar mais esse estouro de memória

Ou vc armazena esse arquivo em bytes e não em uma string como está tentando fazer…

O que o derby está dizendo pra vc é que ele não consegue guardar a bíblia inteira num campo de uma tabela em somente num registro… he he he

Boa Tarde! Leopoldof , e mais uma vez muito grato por sua atenção

é verdade o que vc disse e descobri onde estava o problema
// statement = dbConnection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
como eu so carrego o banco , não preciso guarda tudo isso em uma ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY

Comentariei o comando acima e deixei confome abaixo e funcionou belezinha Valeu !
statement = dbConnection.createStatement();

public void executeSQL_BdAppend(String instrucao) {
       try {
       // statement = dbConnection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
        statement = dbConnection.createStatement();
        statement.executeUpdate(instrucao);
       }
       catch(SQLException sqlex){
       //System.out.println("InstruçãoSql = "+instrucao);
       JOptionPane.showMessageDialog(null,"nao foi possivel executar = "+sqlex
       +"o sql passado foi = "+ instrucao);
       }
    }
Criado 14 de março de 2013
Ultima resposta 15 de mar. de 2013
Respostas 4
Participantes 2