Eu sei o que é PermGen, para que é usado, por que falha, 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?
Eu sei o que é PermGen, para que é usado, por que falha, 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?
Respostas:
Geração Permanente. Os detalhes são obviamente específicos da implementação.
Resumidamente, ele contém os objetos Java associados a classes e cadeias internas. Na implementação do cliente da Sun com compartilhamento ativado, a classes.jsa
memória é mapeada para formar os dados iniciais, com cerca de metade da leitura e metade da cópia na gravação.
Objetos Java que são apenas antigos são mantidos na Geração Tenured.
O PermGen é usado pela JVM para armazenar classes carregadas. Você pode aumentá-lo usando:
-XX:MaxPermSize=384m
se você estiver usando o Sun JVM ou OpenJDK.
Portanto, se você obtiver uma OutOfMemoryException: PermGen, precisará aumentar a PermGen ou poderá ter problemas com o carregador de classes.
Geração Permanente. Consulte o guia de ajuste do java GC para obter mais detalhes sobre o coletor de lixo.
Não corresponde realmente à pergunta original, mas pode ser que alguém a ache útil. PermGen é de fato uma área na memória em que Java costumava manter suas classes. Portanto, muitos de nós já encontramos o OOM no PermGen, se houver, por exemplo, muitas classes.
Desde o Java 8, a área de PermGen foi substituída pela área do MetaSpace, que é mais eficiente e ilimitada por padrão (ou mais precisamente - limitada pela quantidade de memória nativa, dependendo da jvm de 32 ou 64 bits e da disponibilidade da memória virtual do SO). No entanto, é possível ajustá-lo de algumas maneiras, especificando, por exemplo, um limite máximo para a área. Você pode encontrar informações mais úteis nesta postagem do blog .
PermGen significa Geração Permanente .
Aqui está uma breve sinopse do DDJ
Permgen significa Geração Permanente. É uma das áreas de memória da JVM. Faz parte do Heap com tamanho fixo usando um sinalizador chamado MaxPermSize.
Por que o nome "PermGen"?
Este permgen foi nomeado nos primeiros dias de Java. A rede de Permgen mantém todos os metadados das classes carregadas. Mas o problema é que, quando uma classe é carregada, ela permanece na JVM até o encerramento da JVM. Então, o nome permgen é optar por isso. Mais tarde, porém, o carregamento dinâmico de classes entrou em cena, mas o nome não foi alterado. Mas com o Java 8 , eles abordaram esse problema também. Agora, o permagen foi renomeado como MetaSpace com tamanho de memória dinâmica.