O que PermGen realmente significa?
Pergunta
Eu sei o que PermGen é, o que é usado para, por que ele falhar, como aumentá-lo etc.
O que eu não sei é o que PermGen realmente significa. Permanente ... Gen ... alguma coisa?
Alguém sabe o que PermGen realmente significa?
Solução
Geração Permanente. Detalhes são de aplicação específica do curso.
Resumidamente, ele contém o Java objetos associados a classes e cordas internados. Na implementação do cliente da Sun com o compartilhamento on, classes.jsa
é memória mapeada para formar os dados iniciais, com cerca de metade só de leitura e metade copy-on-write.
objetos Java que são meramente velho são mantidos na Geração Tenured.
Outras dicas
PermGen é usado pela JVM para manter classes carregadas. Você pode aumentá-lo usando:
-XX:MaxPermSize=384m
Se você estiver usando o Sun JVM ou OpenJDK.
Portanto, se você receber um OutOfMemoryException:. PermGen você precisa que quer fazer PermGen maior ou você pode estar tendo problemas de carregador de classe
Geração Permanente. Veja a java GC guia de afinação para mais detalhes sobre o coletor de lixo.
Não é realmente relacionados jogo à pergunta original, mas pode ser alguém vai encontrá-lo útil. PermGen é de fato uma área na memória onde Java usado para manter suas classes. Então, muitos de nós têm deparei OOM em PermGen, se houvesse, por exemplo, um monte de classes.
Desde Java 8, área PermGen foi substituído por área MetaSpace, que é mais eficiente e é ilimitado por padrão (ou mais precisamente - limitado pela quantidade de memória nativa, dependendo JVM de 32 ou 64 bits e disponibilidade de memória virtual OS) . No entanto, é possível ajustá-lo em alguns aspectos, por, por exemplo, especificação de um limite máximo para a área. Você pode encontrar mais informações úteis no este post .
PermGen significa Geração Permanente .
Aqui está uma breve sinopse sobre DDJ
Se bem me lembro, o gen significa geração, como em um coletor de lixo geracional (que trata objetos mais jovens de forma diferente do que meia-idade e objetos "permanentes"). Princípio da localidade sugere que os objetos recém-criados serão eliminados em primeiro lugar.
permgen significa Geração Permanente. É uma das áreas de memória JVM. É parte do montão com tamanho fixo usando um sinalizador chamado MaxPermSize.
Por que o nome "PermGen"?
Esta permgen foi nomeado em primeiros dias de Java. Permgen rede mantém todos os dados de meta de classes carregadas. Mas o problema é que uma vez que uma classe é carregado, ele vai permanecer na JVM até JVM desligamento. Assim nome permgen é opt para isso. Mas, mais tarde, carga dinâmica de classes entrou em imagem, mas o nome não foi alterado. Mas com Java 8 , eles têm abordado essa questão também. Agora permagen foi renomeado como MetaSpace com o tamanho da memória dinâmica.