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

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.

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.

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 ?

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");
					}
				}

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

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

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

Eu corrigi isso porém ainda continua crescendo

Estou fazendo isso

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