1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Dúvida Consumo Mémória - Exceptions

Fala galera, blz?

Eu estou trabalhando em um projeto onde o cliente está reclamando do consumo excessivo de memória. Analisando o programa reparei que o consumo aumenta muito mesmo quando alguma exception é gerada. Alguém pode me falar se tem algum fundamento isso? Ou se é algo errado no meu código mesmo? Uma informação que pode ser relevante é que estou usando algumas threads. Tem alguma coisa a ver?

--update Eu fiz alguns testes e verifiquei que o maior consumos esta na execução desse socket.

 @Override
    public void run() {

        //System.out.println(System.currentTimeMillis());
        Socket client = null;
        String lineXml = "";
        char[] line;
        BufferedReader in;
        while (true) {

            try {
                Thread.sleep(3 * 1000);
                client = new Socket(Config.SOCKET_IP,
                        Integer.parseInt(Config.SOCKET_PORTA)); // Advance Local
                client.setSoTimeout(30 * 1000);
                client.setKeepAlive(true);

                lineXml = "";

                while (client.isConnected()) {
                    line = " ".toCharArray();
                    in = new BufferedReader(new InputStreamReader(client.getInputStream()));
                    while (in.read(line) > 0) {
                        if (lineXml.length() < Integer.parseInt(Config.TAMANHO_LINHA) - 1) {
                            lineXml += String.copyValueOf(line);
                            //Thread.sleep(100);
                        } else {
                            lineXml += String.copyValueOf(line);
                            sql.adicionaRegistros(lineXml);
                            lineXml = "";
                        }
                    }
                }

                client.close();
                Log.log("desconectou!");
            } catch (InterruptedException | NumberFormatException | IOException ex) {
                Log.log("@RecuperarRegistroOmnilink: " + ex.getClass().getName() + " : " + ex.getMessage());
            }
        }

    }

será que tem como melhorá-lo

  • Você chegou a verificar como está a execução da aplicação utilizando o visualvm ou java mission control?

    Ramon Pires   30 de jul de 2014
  • Provavelmente é algo errado no seu código. Na próxima vez que levantar a JVM no seu cliente, adicione o parâmetro -XX:+HeapDumpOnOutOfMemoryError para que seja gerado um dump do heap. Através desse dump, você pode usar o Eclipse Memory Analyzer para descobrir onde está o consumo de memória.

    Rodolfo Mendes   08 de ago de 2014
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

-1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags memória java threads exception ou faça a sua própria pergunta.