Enquanto aprendo sobre o perfil de memória java, vejo o termo "espaço de perm" além de "heap". Eu sei o que é a pilha - o que é espaço permanente?
Enquanto aprendo sobre o perfil de memória java, vejo o termo "espaço de perm" além de "heap". Eu sei o que é a pilha - o que é espaço permanente?
Respostas:
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.
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:MaxPermSize
se livrar deste erro.
Perm Gen significa geração permanente, que contém as informações de metadados sobre as classes.
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.
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.
PermGen Space significa alocação de memória para geração permanente. Todos os objetos imutáveis Java estão nesta categoria, como os String
que 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.