domingo, 24 de outubro de 2010

PermGem

PermGen space é um erro muito chato que ocorre quando menos se espera!

Antes de qualquer coisa vou falar um pouco do que é PermGen.

Esse é o nome de uma área pequena e limitada (tamanho fixo) da Virtual Machine, é nessa PermGem ou Perm Generation ou Geração Permanente que são guardados objetos de pouca movimentação como por exemplo poll de strings e objetos de reflexão.

E o que esse blá-blá-blá quer dizer?

Como a PermGen tem memória curta, se for usada demais, o entra e sai de códigos pode lotar sua capacidade e gerar o erro java.lang.OutOfMemoryError: PermGen space!

Como resolver isso?

Para aumentar um pouco a memória da virtual machine, podemos utilizar o comando -XX:MaxPermSize em sua inicialização, esse comando aumenta a memória da PermGem na virtual machine!

Um exemplo simples: vamos chamar uma classe mandando a virtual machine utilizar 256mb de memória pra executá-la.

java -XX:MaxPermSize=256m meupacote.MinhaClasse

Ótimo! Mas a menos que você esteja brincando de estourar a memória do computador na faculdade, é muito raro alguem ficar abrindo classes pelo console. Então digamos que você possua uma aplicação web e um servidor Tomcat e ide Eclipse (vou utilizar estes dois como exemplo por que são os mais utilizados), onde colocar esse comando?

Utilizando o Eclipse clique em Window, Preferences, escolha expanda o menu Tomcat e selecione JVM Settings.

Clique em Add, digite na caixa -XX:MaxPermSize=256m e clique em OK.

Pronto, agora a PermGem reservada para o Tomcat será maior e aquele erro chato não vai mais ficar incomodando.

Se você possuir um computador com bastante memória sobrando, pode reservar mais memória para a PermGem, eu coloquei 256 por que é quanto eu uso, mas você pode colocar 512, 1024, 2048, etç, vai da sua vontade.

0 comentários:

Postar um comentário

Alguma dúvida?

 

© 2009Java Erro | by TNB