APLICAÇÃO CONSUMINDO MUITA MEMORIA RAM (HtmlUnit - JPA - Hibernate)

9 respostas
htmlunitjpahibernate
M

Boa tarde,

Estou desenvolvendo um sistema de automação de download de arquivos da minha empresa e estou com um problema de uso de memória ram da minha aplicação.

Estou utilizando Hibernate + JPA, HtmlUnit e CommonsIO Apache.

É uma aplicação desktop e trabalho com thread porém a cada vez que uso uma funcionalidade de download o custo de memória ram aumenta e o mesmo não diminui depois.

Ja verifiquei para ver se o problema era com os streams porém estou usando try-with-resources e não estou esquecendo de fechar nada.

Alguém tem uma ideia do que pode ser?

Estou ficando louco.

9 Respostas

javaflex

Debuga até ver o ponto mais crítico, onde a memória dá o maior salto. Com essa informação terá melhor foco para ver porque não está liberando o recurso.

rmendes08

Uma ferramenta que pode te ajudar a encontrar o gargalo é esse profiler do Java:
https://visualvm.github.io/

Se eu não me engano ele já vem com a JDK.

Por curiosidade, você está mantendo todos os arquivos em memória antes de gravar no disco ?

M

Ja tentei utilizar o visualVM porém está dando erro na hora da instalação do plugin no eclipse.

Não sei bem te dizer se sim mas estou fazendo da seguinte forma:

Utilizando o metodo IOUtils do CommonsIO e passando um Path de destino. Provavelmente não está armazendando em memória antes de gravar no disco.

Mas por desencargo vou verificar.

//PEGANDO O STREAM E FECHANDO APOS

try(InputStream stream = pg.getWebResponse().getContentAsStream() ;

FileOutputStream fos = new FileOutputStream(arquivo.toFile())){
//CARREGANDO CONFIGURAÇOES
						WebTranConfig.getInstance().load();
						
						
						//MENSAGEM DE TESTE
						System.out.println("Tentando baixar:"+codeDaVez.getCode_id().getCode());

						IOUtils.copy(stream,fos);
						GRSYS.addConsole(now+"ARQUIVO "+user.getLogin()+" BAIXADO COM SUCESSO");
					}
				}
M

Usar o simples debug do eclipse?. Tem alguma forma de monitorar isso a partir do Eclipse?

javaflex

Já passei por isso algumas vezes resolvendo só debugando e acompanhando a informação do sistema operacional sobre a RAM.

rmendes08

Esse cara tá ficando aberto … o try-with-resources só vai fechar quem estiver entre parênteses do try().

M

Eu corrigi isso porém ainda continua crescendo

M

Estou fazendo isso

javaflex

Veja se tem mais recursos para serem liberados conforme o identificado pelo @rmendes08.

Criado 15 de fevereiro de 2018
Ultima resposta 16 de fev. de 2018
Respostas 9
Participantes 3