Pergunta

Eu tenho aplicativo corporativo com EJB3 e JSF no Glassfish Server. Depois de executar este aplicativo por mais de duas semanas, percebi que tenho problemas com o carregamento da classe. Eu não acho que isso seja um problema com o Permgen. As aulas carregavam toda vez que abro uma página, mas nunca apagavam da memória. Aqui está o instantâneo ou a memória do meu servidor:

Instantâneo

Então, eu só preciso de algumas dicas de como posso depurar esse problema.

Foi útil?

Solução

Há um Boa explicação do por que esse tipo de coisa acontece e um relato mais recente de um problema semelhante aqui.

Usando Jhat Pode ajudar a descobrir quais classes estão ocupando a memória e, em seguida, procure uma referência estática que possa segurá -las/ou o carregador de classe, impedindo a descarga adequada.

Outras dicas

Não parece que você esteja recarregando seu aplicativo, o que seria a resposta óbvia. Realmente você quer descobrir o que são essas aulas.

Reflexão e XSLT [c] são alvos óbvios para criar classes, mas isso parece incrivelmente regular. Presumivelmente, há algum cache baseado em tempo em algum lugar que está vazando de alguma forma.

Isso pode ser um problema com sua estrutura da Web JSF (MyFaces, Icefaces etc.), se você estiver usando um. Especialmente, considerando o fato de você não estar reimplantando o aplicativo, mas isso acontece quando as páginas são abertas/fechadas. Eu sugiro que você verifique o rastreador de problemas apropriado, antes de fazer mais depuração e criação de perfil.

Além disso, você pode tentar implantar o aplicativo em sua máquina local, com espaço intencionalmente baixo, e tentar reproduzir o vazamento de memória consistentemente, navegando apenas pelas páginas da Web do aplicativo. Felizmente, você poderá perceber exatamente que tipo de ação resulta em novas classes sendo carregadas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top