"Compreensão aprofundada da máquina virtual", leitura de notas - estratégia de alocação de memória e reciclagem

Estratégia de alocação de memória e reciclagem

  • Visão geral
    • Os objetos são distribuídos principalmente no distrito Eden da nova geração.
    • Se o buffer de encadeamento local (tlab) for iniciado, a prioridade será alocada de acordo com o encadeamento.
    • Alguns objetos grandes serão alocados diretamente na geração antiga.
    • As regras de alocação não são fixas e dependem principalmente da combinação do coletor de lixo e das configurações de parâmetros relacionadas.
  • -XX: + PrintGCDetails
    • Imprimir informações do GC
  • Os objetos são alocados primeiro no Eden
    • Quando o Eden não é contínuo o suficiente para alocar objetos, o GC Menor é acionado para transferir os objetos vivos do Eden e os objetos Survivor para outro Survivor.
    • Se o espaço do Survivor não for suficiente para armazenamento, ele será transferido para a geração antiga com antecedência através do mecanismo de garantia de alocação.
  • Objetos grandes vão diretamente para a geração antiga
    • Objetos grandes: objetos que requerem muito espaço de memória contínuo.
    • -XX: PretenureSizeThreshold = xxx byte
      • Defina o limite para objetos grandes. Fazer objetos maiores que essa configuração vale a pena atribuir diretamente na geração antiga.
      • O objetivo é evitar muita cópia de memória entre a área de Eden e as duas áreas de Survivor.
      • Suporta apenas Serial e ParNew
  • Objetos de vida longa entram na velhice
    • Contador de idade do objeto
    • Quando o sujeito primeiro Gc menor e passa para o Survivor, a idade do sujeito é definida em 1.
    • Após cada experiência de GC Menor no Survivor, envelheça +1;
    • Quando a idade aumenta para um determinado nível (padrão 15), é promovida para a idade avançada
    • -XX: MaxTenuringThreshold
  • Determinação dinâmica da idade do objeto
    • Se a soma do tamanho de todos os objetos no espaço Survivor da mesma idade for maior que a metade do espaço Survivor, todos os objetos maiores ou iguais à idade entrarão diretamente na idade avançada.
  • Garantia de alocação de espaço
    • Antes do GC Menor, a máquina virtual verificava se o maior espaço contíguo disponível na geração antiga era maior que o tamanho de todos os objetos da nova geração ou o tamanho médio das promoções anteriores.
    • Se for maior, considera-se que ele executa GC menor, caso contrário, GC completo
    • Antes da versão 1.6, o início era verificar o tamanho de todos os objetos da nova geração: se passasse, o GC menor seria usado diretamente. Se não for aprovado, é julgado se o valor de configuração de HandlePromotionFailure permite que a garantia falhe. Se permitido, o GC menor será executado apenas se for considerado maior que o tamanho médio das gerações anteriores. Caso contrário, o parâmetro não é permitido ou o tamanho não é permitido. GC completo
Publicado 24 artigos originais · elogiado 0 · visitas 101

Acho que você gosta

Origin blog.csdn.net/jiangxiayouyu/article/details/105614254
Recomendado
Clasificación