JVM observa a área de cinco heap

JVM observa a área de cinco heap

Na JVM, a área de heap é a principal prioridade. Através do estudo do artigo anterior, sabemos que não haverá coleta de lixo na área de pilha, portanto, a coleta de lixo freqüentemente referida são na verdade os dados na área de heap. Aqui, veremos a lendária nova geração, velha geração e geração permanente (metaspace). Kaige Java (kaigejava) convida todos a aprenderem juntos.

Pilha:

Existe apenas uma memória heap para uma instância JVM e o tamanho da memória heap pode ser ajustado. Depois que o carregador de classes lê o arquivo de classe, ele precisa colocar as classes, métodos e variáveis ​​constantes na memória heap para salvar as informações reais de todos os tipos de referência para facilitar a execução do executor. A memória heap é dividida em três partes:

Partição de memória heap:

Espaço Young Generation Young / New

Espaço de geração de posse 老 年代 Antigo / Posse

Espaço Permanente Perm

Diagrama esquemático da memória heap antes do Java 7:

0kivWHDU4Se


Processo de versão curta:

0kivWHfEwq0

0kivWHwtvEm


A área do recém-nascido é a área onde as classes nascem, crescem e morrem, uma classe é gerada, aplicada e, finalmente, coletada pelo catador de lixo para encerrar sua vida.

A área do recém-nascido é dividida em duas partes: espaço Eden e espaço Survivor. Todas as aulas são novas no Eden Park.

Existem duas áreas de sobrevivência: área 0 (espaço do sobrevivente 0) e área 1 (espaço do sobrevivente 1).

Quando o espaço no Eden Park se esgota, o programa precisa criar objetos. O coletor de lixo da JVM fará a coleta de lixo (Minor GC, também chamado de light GC ou YGC) no Eden Park, para que o Eden Park não seja mais usado por outros objetos. O objeto referenciado é destruído. Em seguida, os objetos restantes no Jardim do Éden movem-se para a zona sobrevivente 0 (também chamada de zona inicial). Se a área sobrevivente 0 também estiver cheia, a área é novamente coletada com lixo e depois transferida para a área 1 (também chamada de área).

E se o Distrito 1 também estiver cheio? Após 15 YGCs, a Área de Sobrevivência 1. Nesse momento, a JVM moverá os dados para a área de aposentadoria. Se a área de aposentadoria também estiver cheia, o MajorGC (também chamado de inspeção GC total FGC) será executado neste momento. Execute GC completo para limpar a memória na área de cuidados de idosos. Se após executar Full GC na área envelhecida, for descoberto que o objeto ainda não pode ser salvo, uma exceção OOM (OutOfMemoryError) ocorrerá neste momento.

Se java.lang.OutOfMemoryError: o espaço de heap java estiver anormal. Isso mostra que a memória heap da máquina virtual Java não é suficiente. Há duas razões principais:

1: A configuração de memória heap da máquina virtual java não é suficiente, você pode ajustá-la através dos parâmetros -Xms e -Xmx

2: Um grande número de objetos grandes é criado no código e não pode ser reciclado pelo coletor de lixo por um longo tempo (o endereço de memória é referenciado)

Quando seus talentos não podem suportar suas ambições, você deve se acalmar e aprender;

Quando sua habilidade não consegue controlar seu objetivo, você deve se acalmar e praticar;

Os sonhos não são impetuosos, mas precipitação e acumulação. Só a beleza que se pode expressar, mas o brilho que não esperava. A oportunidade é sempre deixada para quem mais deseja. Aprenda a falar com você do fundo do coração e pergunte-se o que você quer Vida, acalme-se para aprender, estabeleça-se com paciência, dê-se a si mesmo e encoraje-se uns aos outros!


Acho que você gosta

Origin blog.51cto.com/kaigejava/2541126
Recomendado
Clasificación