A coleta de lixo
- Objeto algoritmo de decisão sobreviveu
- algoritmo de coleta de lixo
- HotSpot algoritmo e o coletor de lixo
- estratégias de alocação de memória e recuperação
-
- Objetos algoritmo de determinação de sobrevivência (JVM reciclar esses objetos)
O conceito: quatro tipos de tipos de referência
- Citar forte: a falta de memória oportuna não será GC, não é livre para recuperar forte referência ao objeto; ainda joga OOM (OutOfMemoryError), não será livre para recuperar objetos de referência fortes
- Citar Soft: Apenas para fora da memória, será GC; falta de memória recuperado irá lançar uma exceção OOM
- referências fracas: Se a adequação da memória atual será GC
- Falsa citação: Toda vez que vai fazer GC
. Um algoritmo de contagem de referência: adicionar uma referência para o objeto de contador, sempre que uma referência ao local de seu tempo é incrementado quando há falha dos decréscimos de referência; qualquer momento o contador 0 do objeto não pode ser usado
(Mas porque ele não poderia resolver referência circular mútua problema, não é usado por JVM corrente principal)
. Análise b acessibilidade: GC RAIZ] a [o objecto como um ponto de partida, para iniciar a pesquisa a partir do nó para baixo, chamado procura de caminho percorrido cadeia de referências , quando um objecto de GC RAIZ quando ninguém qualquer cadeia de referência, em seguida, o objeto não está disponível.
Ele pode ser usado como um objecto de GC ROOT
Note-se que: sendo julgado objetos inacessíveis não pode realmente ser condenado à morte pelo método de análise acessibilidade, pelo menos duas vezes para passar pelo processo de etiquetagem, para determinar se o objeto é necessário realizar uma finalize (), se for determinado, se necessário, também será a realização de um rastreio, se o objectivo é o de estabelecer uma relação com quaisquer referências de objeto na cadeia, ele será removido "irá recuperar" no finalize () em conjuntos |
2. algoritmos de coleta de lixo (JVM introduzem reciclagem como esses objetos)
a. algoritmo de coleta de gerações (um algoritmo é usado atualmente em máquina virtual comercial)
- Cenozóico: um grande número de objetos mortos, apenas alguns sobreviver. Use "algoritmo de replicação", apenas uma pequena quantidade de objetos ao vivo pode ser copiado
- anos de idade: alta taxa de sobrevivência do objeto . O uso da marca "- algoritmo de limpeza" ou "mark - algoritmo de ordenação", apenas a recuperação menos acentuada do objeto pode ser.
b. Copie o algoritmo
- De acordo com a capacidade de memória disponível é dividido em dois iguais, que usa apenas um. Quando uma cópia do que ficar sem memória, mas também a sobrevivência do objeto para outro bloco de memória, uma memória nestes saia limpo.
- Prós: cada tempo para a recuperação de memória para toda a meia-área, independentemente das circunstâncias, tais como a fragmentação da memória. Enquanto o topo do movimento ponteiro da pilha, de modo a alocar a memória, simples, operação eficiente
- Desvantagens: cada memória disponível é reduzido para metade o uso original, pouca memória
Estudos têm demonstrado que 98% da nova geração do objeto é para estudantes à noite morto, não é necessário de acordo com a 1: 1 para dividir o espaço de memória, mas o espaço é dividido em um pedaço maior do Éden e dois sobrevivente espaço menor, No HotSpot Virtual Machine rácio de incumprimento de 8: 1: 1 . Éden e cada vez que você usar um sobrevivente, a recuperação destes dois objetos estão vivos uma vez copiadas para outro pedaço de Survivor, fazer a limpeza. Visível apenas 10% da memória é "desperdício", se sobrevivente espaço insuficiente também precisa confiar em outra memória (anos) garantia alocado. |
C Limpar lei rotulagem:. Primeiros objetos marca precisa ser recuperado, remova então unificada esses objetos
Desvantagens: marca, eficiência de remoção não é alta, quando o lixo espacial demais, que irá produzir um grande número de detritos espaciais discreto, poderia levar a uma maior necessidade de alocar objetos na parte de trás, porque eles não conseguem encontrar um grande espaço contínuo no gatilho antecedência outro GC, afetar o desempenho.
. D marca - Collation Algorithm: First "tag" todos os objetos precisam ser recuperados, em seguida, "Atualizar", de modo que o objeto de sobrevivência são movidos para o fim, e, finalmente, limpar a memória diretamente fora do limite do terminal .
Prós: Isso não desperdiçam 50% do espaço, não há detritos espaciais, o custo mais elevado .
Em circunstâncias normais, seria optar por anos antiga marca - Collation Algorithm.