JavaRush /Java Blog /Random-IT /Pausa caffè #132. Diamo un'occhiata a ZGC, il nuovissimo ...

Pausa caffè #132. Diamo un'occhiata a ZGC, il nuovissimo garbage collector nel JDK. Qual è la differenza tra HashMap, LinkedHashMap e TreeMap in Java

Pubblicato nel gruppo Random-IT

Presentazione di ZGC, il nuovo garbage collector di JDK

Fonte: Inside Java ZGC o Z Garbage Collector è il garbage collector più moderno del JDK. Originariamente è apparso in JDK 11 come funzionalità sperimentale. ZGC è diventato una funzionalità di produzione in JDK 15 dopo l'approvazione del miglioramento JEP 377. In questo articolo esamineremo gli obiettivi e il futuro di ZGC. Pausa caffè #132.  Diamo un'occhiata a ZGC, il nuovissimo garbage collector nel JDK.  Qual è la differenza tra HashMap, LinkedHashMap e TreeMap in Java - 1

Recensione ZGC

ZGC è progettato per essere un garbage collector scalabile e a bassa latenza. Il tempo di pausa massimo durante il funzionamento dello ZGC raramente supera i 250 microsecondi, sì, esattamente i microsecondi, con un tempo di pausa medio di decine di microsecondi. ZGC è altamente scalabile, con dimensioni heap minime che vanno da 8 MB a 16 TB. È importante notare che il tempo di pausa non aumenta con la dimensione dell'heap. Pertanto, anche con un heap di diversi terabyte, il tempo di pausa verrà comunque misurato in microsecondi. Sebbene ZGC offra bassa latenza ed elevata scalabilità, ha un costo in termini di throughput inferiore di circa il 10% rispetto a G1. L'esatta riduzione del throughput dipende dalla progettazione dell'applicazione, dall'architettura del sistema e dalle esigenze aziendali.

Utilizzando ZGC

Poiché G1 è il garbage collector predefinito a partire da JDK 9, dovrai impostare il flag VM -XX:+UseZGC per utilizzare ZGC. Quando si utilizza ZGC, la configurazione più importante è impostare la dimensione massima dell'heap, -Xmx. La dimensione dell'heap dovrebbe essere sufficientemente grande da gestire il live set della tua applicazione. Deve inoltre disporre di una riserva aggiuntiva per eseguire la garbage collection. Maggiore è lo spazio disponibile nell'heap, minore sarà la frequenza con cui sarà richiesta la garbage collection. Ma tieni presente che questo deve essere bilanciato con l'utilizzo della memoria.

Ulteriore sviluppo di ZGC

Dal suo rilascio come funzionalità di produzione in JDK 15, ZGC ha continuato a essere sviluppato attivamente. Con il rilascio di JDK 16, è stata introdotta l'elaborazione parallela dello stack di thread (JEP 376) e JDK 18 ha aggiunto la deduplicazione delle righe come funzionalità aggiuntiva. In futuro si prevede che ZGC diventi multigenerazionale, anche se non è stato ancora stabilito il periodo di tempo specifico per l'attuazione di questo miglioramento.

Ulteriori informazioni su ZDC

Qual è la differenza tra HashMap, LinkedHashMap e TreeMap in Java

Fonte: Rrtutors Se desideri memorizzare coppie chiave-valore in un programma Java, le raccolte Java offrono molte opzioni a seconda delle tue esigenze. Questi includono LinkedHashmap , HashMap e TreeMap . Le differenze principali tra queste tre classi risiedono nella loro implementazione interna e nell'applicazione specifica in determinati casi. Pausa caffè #132.  Diamo un'occhiata a ZGC, il nuovissimo garbage collector nel JDK.  Qual è la differenza tra HashMap, LinkedHashMap e TreeMap in Java - 2

Differenze tra HashMap, LinkedHashMap e TreeMap in Java

Ecco le principali differenze tra le tre classi menzionate in base all'implementazione, all'ordinamento, all'ordinamento e al supporto per chiavi e valori null.

Implementazione

Sia HashMap che LinkedHashMap implementano l' interfaccia Map , mentre TreeMap implementa le interfacce Map , NavigableMap e vSortedMap. LinkedHashMap è implementato come un bucket di elenchi a doppio collegamento, HashMap è implementato come una tabella hash e TreeMap è implementato come un albero.

Ordinare e smistare

  • HashMap non fornisce garanzie riguardo all'ordine delle iterazioni. Tuttavia, può cambiare completamente quando vengono aggiunti nuovi elementi.

  • LinkedHashMap eseguirà l'iterazione nell'ordine in cui le voci sono state inserite nella mappa.

  • TreeMap esegue l'iterazione secondo l'"ordine naturale" delle chiavi secondo il loro metodo compareTo() (o comparatore esterno). Implementa anche l' interfaccia SortedMap , che contiene metodi che dipendono dall'ordinamento.

Chiavi e valori nulli

HashMaps e LinkedHashMap supportano valori null così come valori chiave, mentre TreeMap non supporta valori null poiché supportano tipi di elementi naturali. Per un esempio visivo, creiamo 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);

            }

}
In uscita otteniamo:
{First=Java, Second=Python} I valori HashMap sono: {Second=Python, First=Java} I valori LinkedHashMap sono: {First=Java, Second=Python}
Pertanto, tutte e tre le classi rappresentano una mappatura da chiavi univoche a valori e quindi implementano l' interfaccia Map .
  • HashMap è una mappa basata sull'hashing delle chiavi. Supporta le operazioni get/put O(1). Le chiavi devono avere implementazioni hashCode() ed equals() coerenti .

  • Una LinkedHashMap è molto simile a una HashMap , ma ha un ordine in cui gli elementi vengono aggiunti (o accessibili), quindi l'ordine di iterazione è lo stesso dell'ordine di posizionamento (o ordine di accesso, a seconda dei parametri di progettazione).

  • TreeMap è una mappatura basata su alberi. Le sue operazioni put/get richiedono tempo O(log n). Ciò richiede che gli elementi abbiano una sorta di meccanismo di confronto, con un confronto o un comparatore. L'ordine delle iterazioni è determinato da questo meccanismo.

Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION