Memory leak TreeNode Primefaces

1 resposta
Xmio

Bom dia pessoal,

Estou tendo problemas de memoria durante a utilização do TreeNode do primefaces e gostaria de auxilio para solução.
Passei algumas semanas já buscando a origem do memory leak, imaginava que estava no algorítimo gerador do tree que utiliza recursividade em cima de hashMaps, porem depois de muito estudo em cima verifiquei que o problema não estava no algorítimo e sim na utilização do TreeNode.

No código abaixo a variável nodoPai, que é utilizada pelo componente do primefaces para geração do TreeView não é finalizada quando o usuário fecha a aba do browser ou fecha o browser, enfim.. e isso faz com que o GC identifique a variável como tendo ainda uma instancia dentro da aplicação, assim a variável que ocupa em media 150mb de memoria fica em memoria para sempre.

Se alguém tiver alguma opinião do que devo fazer agradeço..

private TreeNode nodoPai;
	private List<Leiaute> leiautes;
	
	@Override
	public String pesquisa() {
		
		mapEscrituracao = ((IAppFacade)getServiceFacade()).recuperaEscrituracao(context, (EscrituracaoDTO)entidadePlc, null, null);
		
		List<LeiauteBaseEntity> root = new ArrayList<LeiauteBaseEntity>();
		for(LinkedHashMap<Long, LeiauteBaseEntity> desc : mapEscrituracao.values()){
			if(desc.values() != null){
				Class classeAnterior = Object.class;
				for (LeiauteBaseEntity entidadeRoot : desc.values()) {
					if(!classeAnterior.equals(entidadeRoot.getClass())){
						entidadeRoot.setMostraColunas(Boolean.TRUE);
					}
					classeAnterior = entidadeRoot.getClass();
				}
			}
			root.addAll(desc.values());
			//Popula os dados nas colunas
			GenericsEntityUtils.populaDadosColunasEntidade(root);
		}
		//Monta a arvore para exibicao
		nodoPai = new AuditorTreeNode("Root", null);
     montaArvorePaiRecursivo(nodoPai, root);
     return pesquisaApos();
   }

1 Resposta

Xmio

Resolvi limpando as variáveis em um método anotado com @Destroy

Não é a melhor forma, mas por hora resolvera meu problema…

Criado 11 de junho de 2013
Ultima resposta 25 de jun. de 2013
Respostas 1
Participantes 1