JavaRush /Java Blog /Random-TL /Coffee break #132. Tingnan natin ang ZGC, ang pinakabagon...

Coffee break #132. Tingnan natin ang ZGC, ang pinakabagong kolektor ng basura sa JDK. Ano ang pagkakaiba sa pagitan ng HashMap, LinkedHashMap at TreeMap sa Java

Nai-publish sa grupo

Ipinakikilala ang ZGC, ang pinakabagong kolektor ng basura ng JDK

Source: Inside Java Ang ZGC o Z Garbage Collector ay ang pinakamodernong kolektor ng basura sa JDK. Ito ay orihinal na lumitaw sa JDK 11 bilang isang pang-eksperimentong tampok. Naging feature ng produksyon ang ZGC sa JDK 15 pagkatapos maaprubahan ang pagpapahusay ng JEP 377. Sa artikulong ito, titingnan natin ang mga layunin at hinaharap ng ZGC. Coffee break #132.  Tingnan natin ang ZGC, ang pinakabagong kolektor ng basura sa JDK.  Ano ang pagkakaiba sa pagitan ng HashMap, LinkedHashMap at TreeMap sa Java - 1

Pagsusuri ng ZGC

Ang ZGC ay idinisenyo upang maging isang scalable, low-latency na kolektor ng basura. Ang maximum na oras ng pag-pause sa panahon ng pagpapatakbo ng ZGC ay bihirang lumampas sa 250 microseconds. Oo, eksaktong microseconds, na may average na oras ng pag-pause na sampu-sampung microseconds. Ang ZGC ay lubos na nasusukat, na may pinakamababang laki ng heap mula 8 MB hanggang 16 TB. Mahalagang tandaan na ang oras ng pag-pause ay hindi tumataas sa laki ng tambak. Kaya, kahit na may tambak na ilang terabytes ang laki, ang oras ng pag-pause ay susukatin pa rin sa microseconds. Bagama't nagbibigay ang ZGC ng mababang latency at mataas na scalability, nasa gastos ito ng throughput na humigit-kumulang 10% na mas mababa kumpara sa G1. Ang eksaktong pagbabawas ng throughput ay nakasalalay sa disenyo ng application, arkitektura ng system, at mga pangangailangan ng negosyo.

Gamit ang ZGC

Dahil ang G1 ay ang default na kolektor ng basura simula sa JDK 9, kakailanganin mong itakda ang flag ng VM -XX:+UseZGC upang magamit ang ZGC. Kapag gumagamit ng ZGC, ang pinakamahalagang configuration ay ang itakda ang maximum na laki ng heap, -Xmx. Ang laki ng heap ay dapat sapat na malaki upang mahawakan ang live-set ng iyong application. Dapat din itong magkaroon ng karagdagang reserba upang maisagawa ang pangongolekta ng basura. Kung mas maraming espasyo ang magagamit sa tambak, mas kaunting pagkolekta ng basura ang kakailanganin. Ngunit tandaan na dapat itong balanse sa paggamit ng memorya.

Karagdagang pag-unlad ng ZGC

Mula nang ilabas ito bilang feature ng produksyon sa JDK 15, patuloy na aktibong binuo ang ZGC. Sa paglabas ng JDK 16, ipinakilala nito ang thread stack parallel processing (JEP 376), at ang JDK 18 ay nagdagdag ng row deduplication bilang karagdagang feature. Sa hinaharap, pinlano na ang ZGC ay magiging multi-generational, kahit na ang tiyak na time frame para sa pagpapatupad ng pagpapahusay na ito ay hindi pa naitatag.

Higit pang impormasyon tungkol sa ZDC

Ano ang pagkakaiba sa pagitan ng HashMap, LinkedHashMap at TreeMap sa Java

Source: Rrtutors Kung gusto mong mag-imbak ng mga key-value pairs sa isang Java program, ang mga koleksyon ng Java ay nag-aalok ng maraming opsyon para dito depende sa iyong mga pangangailangan. Kabilang dito ang LinkedHashmap , HashMap at TreeMap . Ang mga pangunahing pagkakaiba sa pagitan ng tatlong klase na ito ay nasa kanilang panloob na pagpapatupad at ang partikular na aplikasyon sa ilang mga kaso. Coffee break #132.  Tingnan natin ang ZGC, ang pinakabagong kolektor ng basura sa JDK.  Ano ang pagkakaiba sa pagitan ng HashMap, LinkedHashMap at TreeMap sa Java - 2

Mga pagkakaiba sa pagitan ng HashMap, LinkedHashMap at TreeMap sa Java

Narito ang mga pangunahing pagkakaiba sa pagitan ng tatlong nabanggit na klase batay sa pagpapatupad, pag-order, pag-uuri, at suporta para sa mga null key at value.

Pagpapatupad

Parehong ipinapatupad ng HashMap at LinkedHashMap ang interface ng Map , habang ipinapatupad ng TreeMap ang mga interface ng Map , NavigableMap , at vSortedMap. Ang LinkedHashMap ay ipinatupad bilang isang double-linked list bucket, ang HashMap ay ipinatupad bilang isang hash table, at ang TreeMap ay ipinatupad bilang isang puno.

Pag-order at pag-uuri

  • Walang garantiya ang HashMap tungkol sa pagkakasunud-sunod ng mga pag-ulit. Gayunpaman, maaari itong ganap na magbago kapag nagdagdag ng mga bagong elemento.

  • Ang LinkedHashMap ay umuulit sa pagkakasunud-sunod kung saan inilagay ang mga entry sa mapa.

  • Ang TreeMap ay umuulit ayon sa "natural na pagkakasunud-sunod" ng mga key ayon sa kanilang compareTo() na paraan (o external Comparator). Ipinapatupad din nito ang interface ng SortedMap , na naglalaman ng mga pamamaraan na nakadepende sa pagkakasunud-sunod ng pag-uuri.

Null Keys at Values

Sinusuportahan ng HashMaps at LinkedHashMap ang mga null na halaga pati na rin ang mga pangunahing halaga, habang hindi sinusuportahan ng TreeMaps ang mga null na halaga dahil sinusuportahan nila ang mga natural na uri ng elemento. Para sa isang visual na halimbawa, gumawa tayo ng HashMap , LinkedHashMap at 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);

            }

}
Sa output nakukuha namin:
{First=Java, Second=Python} HashMap Values ​​​​ay: {Second=Python, First=Java} LinkedHashMap values ​​​​ay: {First=Java, Second=Python}
Kaya, ang lahat ng tatlong klase ay kumakatawan sa isang pagmamapa mula sa mga natatanging key hanggang sa mga halaga at samakatuwid ay ipinatupad ang Map interface .
  • Ang HashMap ay isang mapa batay sa key hashing. Sinusuportahan nito ang O(1) get/put operations. Dapat ay may pare-parehong hashCode() at equals() ang mga susi .

  • Ang LinkedHashMap ay halos kapareho sa isang HashMap , ngunit mayroon itong pagkakasunud-sunod kung saan ang mga elemento ay idinagdag (o ina-access), kaya ang pagkakasunud-sunod ng pag-ulit ay pareho sa pagkakasunud-sunod ng pagkakalagay (o pagkakasunud-sunod ng pag-access, depende sa mga parameter ng disenyo).

  • Ang TreeMap ay isang tree-based na pagmamapa. Ang put/get operations nito ay tumatagal ng O(log n) na oras. Nangangailangan ito na ang mga elemento ay may ilang uri ng mekanismo ng paghahambing, alinman sa isang paghahambing o isang comparator. Ang pagkakasunud-sunod ng mga pag-ulit ay tinutukoy ng mekanismong ito.

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