Pergunta

Estou confuso com Pilha,Jovens,Vinculados e Perm geração.

Alguém poderia explicar?

Foi útil?

Solução

O coletor de lixo Java é referido como um Coletor de lixo geracional. Os objetos em um aplicativo vivem por um tempo variável, dependendo de onde são criados e como são usados. O principal insight aqui é que o uso de diferentes estratégias de coleta de lixo para objetos de vida curta e de vida longa permite que o GC seja otimizado especificamente para cada caso.

Frouxamente falando, como objetos "sobrevivem" repetidos coleções de lixo no Geração jovem Eles são migrados para o Geração titular. o Geração permanente é um caso especial, ele contém objetos, necessários para a JVM, que não são necessariamente representados em seu programa, por exemplo, objetos que representam classes e métodos.

Desde o Geração jovem Geralmente contém muito lixo, é otimizado para se livrar de muitos objetos não utilizados de uma só vez. o Geração titular Uma vez que contém objetos de vida mais longa é otimizada para a rápida coleta de lixo sem desperdiçar muita memória.

Com melhorias na tecnologia de coleta de lixo, os detalhes se tornaram bastante complexos e variam dependendo da sua JVM e como ela foi configurada. Você deveria ler o documentação Para a JVM específica que você está usando, se precisar saber exatamente o que está acontecendo.

Dito isto, existe um simples arranjo histórico que ainda é útil em um nível conceitual. Historicamente o Geração jovem seria um Cópia de cópia e a Geração titular ser um Marcar e varrer colecionador. UMA Cópia de cópia Paga essencialmente nenhum custo da CPU para se livrar do lixo, a maior parte do custo é para manter objetos vivos, o preço dessa eficiência é o uso da memória mais pesado. UMA Marcar e varrer colecionador paga algum custo da CPU para objetos vivos e não utilizados, mas utiliza memória com mais eficiência.

Outras dicas

Java Heap De Memória é parte da memória alocada para JVM pelo Sistema Operacional.Sempre que criar objetos que são criados dentro heap java.

Java Heap space é dividido em três regiões ou de geração para fins de coleta de lixo chamado Uma Geração de jovens, de Idade ou de titular a Geração e a Permanente Geração de.Permanente, a geração de lixo coletado durante a gc completa no hotspot JVM

O Geração Jovem é onde todos os objetos são alocados e idosos.Quando a geração jovem se enche, isso faz com que um menor de coleta de lixo.Uma geração jovem cheio de objetos mortos são coletados de forma muito rápida.Alguns sobreviventes objetos são idosos e, eventualmente, passar para a velha geração.

O Velha Geração é usado para armazenamento de longo sobreviver objetos.Normalmente, define-se um limite para a geração jovem de objeto e quando a idade for atendida, o objeto é movido para a velha geração.Eventualmente, a velha geração precisa ser coletado.Este evento é chamado de uma grande coleta de lixo.

O Permanente de geração de contém metadados exigidos pela JVM para descrever as classes e os métodos utilizados na aplicação.A permanente geração é preenchido pela JVM em tempo de execução baseado em classes de uso pelo aplicativo.

PermGen foi substituído com Metaspace desde o Java 8 release. PermSize & MaxPermSize parâmetros serão ignorados agora.Ter um olhar para este dzone artigo por Pierre - Hugues Charbonneau entender sobre Metaspace.

enter image description here

Fonte da imagem:http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html

Referem-se ao mesmo artigo para obter mais detalhes.

Todos os objetos no heap sobrevivem quando estão sendo referenciados. Quando não estão mais, o coletor de lixo (GC) recuperará sua memória.

Permgen, jovens e titulares são diferentes clasificações de objetos (ou espaços na pilha onde podem estar).

Permgen: Esses objetos estarão sempre lá, não são coletados de lixo. Os objetos das aulas estão lá, cordas internadas, etc. Não sei se há um GC lá (quando o sistema descarrega aulas ... mas não é uma coisa normal)

Jovem: Quando um objeto é criado, está aqui.

Titular: Um objeto vai para essa classificação/categoria quando sobrevive a passes de n gc (sobreviver = gc passa, mas esse objeto é referenciado para que não possa ser recuperado).

Dependendo do GC usado e de alguma parametrização, o GC passa mais ou menos frequência.

Em seguida, a coleta de lixo pode ter abordagens diferentes para os objetos Maange na pilha. Essa classificação de objetos ajuda a fazê -lo.

Aqui está outro excelente (embora longo) artigo sobre como ajustar/dimensionar seus parâmetros GC, o que pode ajudá -lo a entender ainda mais:

https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/

Uma leitura muito útil se você estiver com problemas de GC e precisar saber como ler os logs do GC ou precisar entender como o seu coletor GC atual funciona.

Se você deseja conectar o monitoramento remoto de um sistema em execução para ver o uso da memória em tempo real e as execuções do GC, verifique esta ferramenta:

http://java.sun.com/performance/jvmstat/visualgc.html

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top