[Dica] Erro: java.lang.OutOfMemoryError: PermGen space

Aqui será o lugar para debate de alguns sistemas operacionais do GNU/Linux.
Avatar do usuário
marceloleaes
Administrator
Administrator
Mensagens: 1516
Registrado em: 10 Jun 2013 12:45
Localização: Novo Hamburgo
Idade: 41
Contato:
Status: Offline

[Dica] Erro: java.lang.OutOfMemoryError: PermGen space

Mensagem por marceloleaes »

O erro
java.lang.OutOfMemoryError: PermGen space
O que é ?

Explicando de forma simples, significa que está faltando memória para a sua aplicação poder funcionar.

Explicando detalhadamente:

O Java possui uma área de memória limitada adicional (separada do "heap"), chamada "Permanent Generation Memory" (ou "Perm Generation", "PermGen" ou "Geração Permanente"), que serve para armazenar objetos de geração permanente da VM (classes, métodos, etc), cuja desalocação é rara ou inexistente.

O tamanho padrão desta área de Geração Permanente é 64 MB.

Portanto, quanto mais objetos sua aplicação utilizar, maior deverá ser o tamanho da área de Geração Permanente.

Havendo uma quantidade de objetos sendo carregados na memória, maior que o limite do "PermGen" pode comportar, acontecerá o estouro do "PermGen" e a JVM irá lançar uma exceção que é justamente o erro "java.lang.OutOfMemoryError: PermGen space"

Por convenção, o tamanho do "MaxPermSize" das contas TomCat, da seguinte forma:
    Java.TOMCAT-1 = 64 MB
    Java.TOMCAT-2 = 96 MB
    Java.TOMCAT-3 = 128 MB
Assim, seu arquivo "catalina.sh", que por padrão, seria assim:
JAVA_OPTS="-Xms32m -Xmx512m -XX:MaxPermSize=128m"
Precisaria ser modificado para ficar assim:
JAVA_OPTS="-Xms32m -Xmx384m -XX:MaxPermSize=256m"
Note que com essa modificação, seus 512MB diminuiram para 384MB (que é justamente o resultado de 512 - 128). Desta forma, você pode ter 256MB como valor do "MaxPermSize"
Editado pela última vez por marceloleaes em 23 Dez 2013 09:31, em um total de 1 vez.


"Transportai um punhado de terra todos os dias e fareis uma montanha." Confúcio

Voltar para “Sistemas Operacionais”