Pocket

3 respostas
jfnando

Olá pessoal!!!
Estou com um problema de performance no pocket e gostaria de ver se alguem pode me ajudar.
Estou desenvolvendo um sistema de sincronização onde chamo um web service e ele me retorna
um arquivo compactado que eu descompacto no pocket e começo a ler varios arquivos .sql com
instrucoes a serem executadas no pocket. Mas em um determinado momento dah um erro de memoria.
Se alguem puder me ajudar eu agradeço mto.
Desde já mto obrigado.

Seque meu codigo:

/**
     * Realiza a importacao.
     */
    private void iniciarProcessoImportacao(){
        try {
            
            List creates = new ArrayList();
            List inserts = new ArrayList();
            List updates = new ArrayList();
            List deletes = new ArrayList();
            
            File dir = new File(ZIP_DIR);
            File[] arquivos = dir.listFiles();
            
            // separa os scripts
            for ( int i = 0 ; i < arquivos.length; i++ ){
                File arquivo = arquivos[i];
                if ( arquivo.isFile() ){
                    if ( arquivo.getName().endsWith(".sql") ){
                        if ( arquivo.getName().indexOf("createTable") > 0 ){
                            ScriptBean script = new ScriptBean();
                            script.setPeso(arquivo.getName().substring(0,2));
                            script.setFile(arquivo);
                            
                            //creates.add(script);
                        } if ( arquivo.getName().indexOf("inserts") > 0 ){
                            ScriptBean script = new ScriptBean();
                            script.setPeso(arquivo.getName().substring(0,2));
                            script.setFile(arquivo);
                            
                            inserts.add(script);
                        } if ( arquivo.getName().indexOf("updates") > 0 ) {
                            ScriptBean script = new ScriptBean();
                            script.setPeso(arquivo.getName().substring(0,2));
                            script.setFile(arquivo);
                           
                            //updates.add(script);
                        } if ( arquivo.getName().indexOf("deletes") > 0 ) {
                            ScriptBean script = new ScriptBean();
                            script.setPeso(arquivo.getName().substring(0,2));
                            script.setFile(arquivo);
                           
                            //deletes.add(script);
                        }
                    }
                }
            }
            
            Ordenacao.ordenarLista(creates, "peso");
            Ordenacao.ordenarLista(inserts, "peso");
            Ordenacao.ordenarLista(updates, "peso");
            Ordenacao.ordenarLista(deletes, "peso");
            
            jpbImportacao.setMaximum(4);
            jpbImportacao.setValue(1);
            
            BufferedReader in = null;
            
            // criando tabelas
            for ( int i = 0; i < creates.size(); i++ ){
                ScriptBean script = (ScriptBean) creates.get(i);
                File arquivo = script.getFile();
                
                FileReader reader = new FileReader(arquivo);
                in = new BufferedReader(reader);
                String str;
                
                form.addInfo("Criando/alterando tabela " + getNomeTabelaArquivo(arquivo.getName()));
                
                jpbImpDados.setMaximum( Integer.parseInt(in.readLine()) );
                jpbImpDados.setValue(0);
                int cont = 0;
                while (in.ready()) {
                    str = in.readLine();
                    executaScript(str);
                    jpbImpDados.setValue(++cont);
                    str = null;
                }
                in.close();
                reader.close();
                reader = null;
                in = null;
                arquivo = null;
                try {
                    Conexao.getConexao().commit();
                } catch (SQLException ex) {
                    form.addError(ex.getMessage());
                }
            }
            
            jpbImportacao.setValue(2);
            
            // deletando
            for ( int i = 0; i < deletes.size(); i++ ){
                ScriptBean script = (ScriptBean) deletes.get(i);
                File arquivo = script.getFile();
                
                FileReader reader = new FileReader(arquivo);
                in = new BufferedReader(reader);
                String str;
                
                form.addInfo("Apagando registros da tabela " + getNomeTabelaArquivo(arquivo.getName()));
                
                jpbImpDados.setMaximum( Integer.parseInt(in.readLine()) );
                jpbImpDados.setValue(0);
                int cont = 0;
                while (in.ready()) {
                    jpbImpDados.setValue(++cont);
                    str = in.readLine();
                    executaScript(str);
                    str = null;
                }
                
                in.close();
                reader.close();
                reader = null;
                in = null;
                arquivo = null;
                
                try {
                    Conexao.getConexao().commit();
                } catch (SQLException ex) {
                    form.addError(ex.getMessage());
                }
            }
            
            jpbImportacao.setValue(3);
            
            // atualizando dados
            for ( int i = 0; i < updates.size(); i++ ){
                ScriptBean script = (ScriptBean) updates.get(i);
                File arquivo = script.getFile();
                
                FileReader reader = new FileReader(arquivo);
                in = new BufferedReader(reader);
                String str;
                
                form.addInfo("Atualizando registros da tabela " + getNomeTabelaArquivo(arquivo.getName()));
                
                jpbImpDados.setMaximum( Integer.parseInt(in.readLine()) );
                jpbImpDados.setValue(0);
                int cont = 0;
                while (in.ready()) {
                    str = in.readLine();
                    executaScript(str);
                    jpbImpDados.setValue(++cont);
                    str = null;
                }
                
                in.close();
                reader.close();
                reader = null;
                in = null;
                arquivo = null;
                
                try {
                    Conexao.getConexao().commit();
                } catch (SQLException ex) {
                    form.addError(ex.getMessage());
                }
            }
            
            jpbImportacao.setValue(4);
            
            // inserindo
            for ( int i = 0; i < inserts.size(); i++ ){
                ScriptBean script = (ScriptBean) inserts.get(i);
                File arquivo = script.getFile();
                
                FileReader reader = new FileReader(arquivo);
                in = new BufferedReader(reader);
                String str;
                
                form.addInfo("Inserindo registros da tabela " + getNomeTabelaArquivo(arquivo.getName()));
                
                jpbImpDados.setMaximum( Integer.parseInt(in.readLine()) );
                jpbImpDados.setValue(0);
                int cont = 0;
                
                while (in.ready()) {
                    str = in.readLine();
                    executaScript(str);
                    jpbImpDados.setValue(++cont);
                    str = null;
                }
                
                in.close();
                reader.close();
                reader = null;
                in = null;
                arquivo = null;
                
                try {
                    Conexao.getConexao().commit();
                } catch (SQLException ex) {
                    form.addError(ex.getMessage());
                }
            }
            
        } catch (IOException ex) {
            form.addError(ex.getMessage());
        }
    }

3 Respostas

T
  1. Você está pegando as conexões ao banco de dados mas não as está fechando (não sei como é que essa classe de conexão tem de ser usada)
  2. Não se esqueça que a memória é compartilhada entre dados e programas em Pocket PCs, pode ser que você esteja pegando arquivos demais ou então esteja esquecendo de deletar arquivos temporários e esteja ficando sem espaço de armazenamento.
jfnando

Valeu thingol!!
Eram exatametne essas duas coisas!!!
Não estava fechando minhas consultas e estava apagando os arquivo somente no final.
Agora ficou blz!!!
Valeu mesmo.

T

Isso foi só na base do chutão :stuck_out_tongue:
Nem li seu programa direito :slight_smile:

Criado 30 de outubro de 2007
Ultima resposta 30 de out. de 2007
Respostas 3
Participantes 2