O que é espaço permanente?


Respostas:


103

Significa geração permanente :

A geração permanente é especial porque contém metadados que descrevem classes de usuário (classes que não fazem parte da linguagem Java). Exemplos de tais metadados são objetos que descrevem classes e métodos e são armazenados na Geração Permanente. Aplicativos com grande base de código podem preencher rapidamente este segmento do heap que causará java.lang.OutOfMemoryError: PermGen não importa quão alto seu -Xmx e quanta memória você tenha na máquina.


Andrew, estou apenas curioso para saber qual poderia ser o tamanho do PerGen?
gks

Apenas curioso para saber se permgen é uma parte da memória heap (conforme declarado nesta resposta) ou está fora da pilha (conforme declarado nesta resposta - stackoverflow.com/a/31103100/3061686 ).
akki

26

Perm spaceé usado para manter informações para classes carregadas e alguns outros recursos avançados como String Pool(para testes de igualdade de strings altamente otimizados), que geralmente são criados por String.intern()métodos. À medida que sua aplicação (número de classes) crescerá, este espaço deve ser preenchido rapidamente, uma vez que a coleta de lixo neste espaço não é muito eficaz para limpar conforme necessário, você obterá rapidamente Sem memória: erro de espaço permanente. Depois disso, nenhum aplicativo será executado naquela máquina de forma eficaz, mesmo depois de ter uma enorme JVM vazia.

Antes de iniciar seu aplicativo, você deve java -XX:MaxPermSizese livrar deste erro.


O pool de strings é alterado para o espaço de heap desde o java 7.
Caffeine Coder

20

Resposta simples (e simplificada): é onde o jvm armazena seus próprios dados de contabilidade, em vez de seus dados.


17

Perm Gen significa geração permanente, que contém as informações de metadados sobre as classes.

  1. Suponha que se você criar um nome de classe A, sua variável de instância será armazenada na memória heap e a classe A junto com carregadores de classe estáticos serão armazenados em geração permanente.
  2. Os coletores de lixo terão dificuldade em limpar ou liberar o espaço de memória armazenado na memória de geração permanente. Portanto, é sempre recomendável manter as configurações da memória permgen no limite aconselhável.
  3. JAVA8 introduziu o conceito chamado geração de meta-espaço, portanto, o permgen não é mais necessário quando você usa as versões 1.8 do jdk.

5

O espaço permgen é a área do heap que contém todos os dados reflexivos da própria máquina virtual, como objetos de classe e método.


3

Ele contém coisas como definições de classe, conjunto de strings, etc. Acho que você poderia chamá-lo de metadados.


3

O espaço Permgen é sempre conhecido como área de método. Quando o subsistema do carregador de classe carrega o arquivo de classe (código de byte) para a área de método (permGen). Ele contém todos os metadados da classe, por exemplo: nome totalmente qualificado da sua classe, nome totalmente qualificado da classe pai imediata, informações da variável, informações do construtor, informações do pool constante etc.


2

O que existe sob PremGen: Área de Classe está sob a área PremGen. Os campos estáticos também são desenvolvidos no momento do carregamento da classe, portanto, também existem no PremGen. A área do Pool constante com todos os campos imutáveis ​​agrupados como String são mantidos aqui. Além disso, dados de classe carregados por carregadores de classes, matrizes de objetos e objetos internos usados ​​por jvm também estão localizados.


1

PermGen Space significa alocação de memória para geração permanente. Todos os objetos imutáveis ​​Java estão nesta categoria, como os Stringque são criados com literais ou com String.intern()métodos e para carregar as classes na memória. O Espaço PermGen acelera nossa pesquisa de igualdade de strings.


1
  • JVM tem uma representação interna de objetos Java e essas representações internas são armazenadas no heap (na geração jovem ou na geração titular).
  • JVM também tem uma representação interna das classes Java e aquelas são armazenadas na geração permanente

insira a descrição da imagem aqui

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.