JavaRush /Blogue Java /Random-PT /Pausa para café #132. Vamos dar uma olhada no ZGC, o mais...

Pausa para café #132. Vamos dar uma olhada no ZGC, o mais novo coletor de lixo do JDK. Qual é a diferença entre HashMap, LinkedHashMap e TreeMap em Java

Publicado no grupo Random-PT

Apresentando o ZGC, o mais novo coletor de lixo do JDK

Fonte: Inside Java ZGC ou Z Garbage Collector é o coletor de lixo mais moderno do JDK. Ele apareceu originalmente no JDK 11 como um recurso experimental. O ZGC se tornou um recurso de produção no JDK 15 após a aprovação do aprimoramento JEP 377. Neste artigo, veremos os objetivos e o futuro do ZGC. Pausa para café #132.  Vamos dar uma olhada no ZGC, o mais novo coletor de lixo do JDK.  Qual é a diferença entre HashMap, LinkedHashMap e TreeMap em Java - 1

Revisão ZGC

O ZGC foi projetado para ser um coletor de lixo escalável e de baixa latência. O tempo máximo de pausa durante a operação do ZGC raramente excede 250 microssegundos, sim, exatamente microssegundos, com um tempo médio de pausa de dezenas de microssegundos. O ZGC é altamente escalável, com tamanhos mínimos de heap variando de 8 MB a 16 TB. É importante observar que o tempo de pausa não aumenta com o tamanho do heap. Assim, mesmo com um heap de vários terabytes de tamanho, o tempo de pausa ainda será medido em microssegundos. Embora o ZGC forneça baixa latência e alta escalabilidade, ele tem um custo de rendimento aproximadamente 10% menor em comparação ao G1. A redução exata do rendimento depende do design do aplicativo, da arquitetura do sistema e das necessidades de negócios.

Usando ZGC

Como G1 é o coletor de lixo padrão começando com JDK 9, você precisará definir o sinalizador VM -XX:+UseZGC para usar ZGC. Ao usar ZGC, a configuração mais importante é definir o tamanho máximo de heap, -Xmx. O tamanho do heap deve ser grande o suficiente para lidar com o conjunto ativo do seu aplicativo. Também deverá possuir reserva adicional para realizar a coleta de lixo. Quanto mais espaço disponível no heap, menos frequentemente será necessária a coleta de lixo. Mas observe que isso deve ser equilibrado com o uso de memória.

Desenvolvimento adicional do ZGC

Desde o seu lançamento como recurso de produção no JDK 15, o ZGC continuou a ser desenvolvido ativamente. Com o lançamento do JDK 16, ele introduziu o processamento paralelo de pilha de threads (JEP 376) e o JDK 18 adicionou a desduplicação de linhas como um recurso adicional. No futuro, está previsto que o ZGC se torne multigeracional, embora o prazo específico para a implementação desta melhoria ainda não tenha sido estabelecido.

Mais informações sobre ZDC

Qual é a diferença entre HashMap, LinkedHashMap e TreeMap em Java

Fonte: Rrtutors Se você deseja armazenar pares de valores-chave em um programa Java, as coleções Java oferecem muitas opções para isso, dependendo de suas necessidades. Estes incluem LinkedHashmap , HashMap e TreeMap . As principais diferenças entre estas três classes residem na sua implementação interna e na aplicação específica em certos casos. Pausa para café #132.  Vamos dar uma olhada no ZGC, o mais novo coletor de lixo do JDK.  Qual é a diferença entre HashMap, LinkedHashMap e TreeMap em Java - 2

Diferenças entre HashMap, LinkedHashMap e TreeMap em Java

Aqui estão as principais diferenças entre as três classes mencionadas com base na implementação, ordenação, classificação e suporte para chaves e valores nulos.

Implementação

Tanto HashMap quanto LinkedHashMap implementam a interface Map , enquanto TreeMap implementa as interfaces Map , NavigableMap e vSortedMap. LinkedHashMap é implementado como um intervalo de lista duplamente vinculado, HashMap é implementado como uma tabela hash e TreeMap é implementado como uma árvore.

Ordenação e classificação

  • HashMap não oferece garantias quanto à ordem das iterações. No entanto, pode mudar completamente quando novos elementos são adicionados.

  • LinkedHashMap irá iterar na ordem em que as entradas foram colocadas no mapa.

  • TreeMap itera de acordo com a “ordem natural” das chaves de acordo com seu método compareTo() (ou Comparador externo). Ele também implementa a interface SortedMap , que contém métodos que dependem da ordem de classificação.

Chaves e valores nulos

HashMaps e LinkedHashMap suportam valores nulos, bem como valores-chave, enquanto TreeMaps não suportam valores nulos, pois suportam tipos de elementos naturais. Para um exemplo visual, vamos criar HashMap , LinkedHashMap e TreeMap .
import java.util.HashMap;

import java.util.LinkedHashMap;

import java.util.Map;

import java.util.TreeMap;

public class HashMap_LinkedHashMap_TreeMap {

            public static void main(String[] args) {

                  Map Treemapu = new TreeMap();

                  Treemapu.put("First", "Java");

                  Treemapu.put("Second", "Python");

                  System.out.println("TreeMap values are: \n" + Treemapu);

                  Map Hashimapu = new HashMap();

                  Hashimapu.put("First", "Java");

                  Hashimapu.put("Second", "Python");

                  System.out.println("HashMap Values are: \n" + Hashimapu);

                  Map LinkedHashiMapu = new LinkedHashMap();

                  LinkedHashiMapu.put("First", "Java");

                  LinkedHashiMapu.put("Second", "Python");

                  System.out.println("LinkedHashMap values are: \n" + LinkedHashiMapu);

            }

}
Na saída obtemos:
{First=Java, Second=Python} Os valores HashMap são: {Second=Python, First=Java} Os valores LinkedHashMap são: {First=Java, Second=Python}
Assim, todas as três classes representam um mapeamento de chaves únicas para valores e, portanto, implementam a interface Map .
  • HashMap é um mapa baseado em hash de chave. Ele suporta operações get/put O(1). As chaves devem ter implementações consistentes de hashCode() e equals() .

  • Um LinkedHashMap é muito semelhante a um HashMap , mas possui uma ordem na qual os elementos são adicionados (ou acessados), portanto a ordem de iteração é igual à ordem de colocação (ou ordem de acesso, dependendo dos parâmetros de design).

  • TreeMap é um mapeamento baseado em árvore. Suas operações put/get levam tempo O(log n). Isto requer que os elementos tenham algum tipo de mecanismo de comparação, seja com uma comparação ou com um comparador. A ordem das iterações é determinada por este mecanismo.

Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION