[Boa descrição] [1] do cara que sabe muito sobre os internos da GC. A propósito, há muitas informações úteis relacionadas ao GC em seu blog. [1]: blogs.oracle.com/jonthecollector/entry/…
Ivan
Respostas:
84
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.jsamemó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.
Qual resposta foi aceita no momento em que você postou este comentário? A resposta atualmente aceita ( esta , de "Tom Hawtin - tackline") parece precisa para mim. Pode fazer sentido editar seu comentário para que não leve as pessoas a desconfiar da resposta aceita atualmente?
Jbyler #
20
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 .
Se bem me lembro, o gen significa geração, como em um coletor de lixo geracional (que trata objetos mais jovens de maneira diferente da meia-idade e objetos "permanentes"). O princípio da localidade sugere que os objetos criados recentemente serão eliminados primeiro.
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.
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.
fonte
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.
fonte
Geração Permanente. Consulte o guia de ajuste do java GC para obter mais detalhes sobre o coletor de lixo.
fonte
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 .
fonte
PermGen significa Geração Permanente .
Aqui está uma breve sinopse do DDJ
fonte
Geração permanente
fonte
Se bem me lembro, o gen significa geração, como em um coletor de lixo geracional (que trata objetos mais jovens de maneira diferente da meia-idade e objetos "permanentes"). O princípio da localidade sugere que os objetos criados recentemente serão eliminados primeiro.
fonte
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.
fonte