JavaRush /Blog Jawa /Random-JV /Ngopi #132. Ayo goleki ZGC, tukang sampah paling anyar in...

Ngopi #132. Ayo goleki ZGC, tukang sampah paling anyar ing JDK. Apa bedane antarane HashMap, LinkedHashMap lan TreeMap ing Jawa

Diterbitake ing grup

Ngenalke ZGC, kolektor sampah paling anyar ing JDK

Sumber: Inside Java ZGC utawa Z Garbage Collector minangka pengumpul sampah paling modern ing JDK. Originally muncul ing JDK 11 minangka fitur eksperimen. ZGC dadi fitur produksi ing JDK 15 sawise dandan JEP 377. Ing artikel iki, kita bakal katon ing gol lan mangsa ZGC. Ngopi #132.  Ayo goleki ZGC, tukang sampah paling anyar ing JDK.  Apa bedane antarane HashMap, LinkedHashMap lan TreeMap ing Jawa - 1

ZGC Review

ZGC dirancang kanggo dadi pengumpul sampah sing bisa diukur, kurang latensi. Wektu ngaso maksimum sajrone operasi ZGC arang ngluwihi mikrodetik 250. Ya, persis mikrodetik, kanthi wektu ngaso rata-rata puluhan mikrodetik. ZGC bisa diukur banget, kanthi ukuran tumpukan minimal saka 8 MB nganti 16 TB. Wigati dimangerteni manawa wektu ngaso ora mundhak kanthi ukuran tumpukan. Mangkono, sanajan ukuran tumpukan sawetara terabyte, wektu ngaso isih bakal diukur ing mikrodetik. Sanajan ZGC nyedhiyakake latensi sing sithik lan skalabilitas sing dhuwur, nanging biaya throughput luwih murah udakara 10% dibandhingake karo G1. Pengurangan throughput sing tepat gumantung saka desain aplikasi, arsitektur sistem, lan kabutuhan bisnis.

Nggunakake ZGC

Wiwit G1 minangka kolektor sampah standar sing diwiwiti karo JDK 9, sampeyan kudu nyetel flag VM -XX: + UseZGC kanggo nggunakake ZGC. Nalika nggunakake ZGC, konfigurasi sing paling penting yaiku nyetel ukuran tumpukan maksimum, -Xmx. Ukuran tumpukan kudu cukup gedhe kanggo nangani live-set aplikasi sampeyan. Uga kudu duwe cadangan tambahan kanggo nindakake pengumpulan sampah. Luwih akeh papan sing kasedhiya ing tumpukan kasebut, luwih sithik pangumpulan sampah bakal dibutuhake. Nanging elinga yen iki kudu diimbangi karo panggunaan memori.

Pangembangan luwih saka ZGC

Wiwit dirilis minangka fitur produksi ing JDK 15, ZGC terus dikembangake kanthi aktif. Kanthi rilis JDK 16, ngenalaken pangolahan paralel tumpukan benang (JEP 376), lan JDK 18 nambahake deduplikasi baris minangka fitur tambahan. Ing mangsa ngarep, direncanakake ZGC bakal dadi multi-generasi, sanajan pigura wektu tartamtu kanggo ngleksanakake dandan iki durung ditetepake.

Informasi liyane babagan ZDC

Apa bedane antarane HashMap, LinkedHashMap lan TreeMap ing Jawa

Sumber: Rrtutors Yen sampeyan pengin nyimpen pasangan kunci-nilai ing program Jawa, koleksi Java nawakake akeh pilihan kanggo iki gumantung saka kabutuhan. Iki kalebu LinkedHashmap , HashMap lan TreeMap . Bentenane utama ing antarane telung kelas kasebut yaiku ing implementasine internal lan aplikasi khusus ing kasus tartamtu. Ngopi #132.  Ayo goleki ZGC, tukang sampah paling anyar ing JDK.  Apa bedane antarane HashMap, LinkedHashMap lan TreeMap ing Jawa - 2

Bedane antarane HashMap, LinkedHashMap lan TreeMap ing Jawa

Mangkene prabédan utama ing antarane telung kelas kasebut adhedhasar implementasine, urutan, ngurutake, lan dhukungan kanggo tombol lan nilai null.

Implementasine

HashMap lan LinkedHashMap ngleksanakake antarmuka Map , dene TreeMap ngleksanakake antarmuka Map , NavigableMap , lan vSortedMap. LinkedHashMap diimplementasikake minangka ember dhaptar sing disambung kaping pindho, HashMap diimplementasikake minangka tabel hash, lan TreeMap diimplementasikake minangka wit.

Urutan lan ngurutake

  • HashMap ora menehi jaminan babagan urutan iterasi. Nanging, bisa diganti rampung nalika unsur anyar ditambahake.

  • LinkedHashMap bakal ngulang urutan entri kasebut ing peta.

  • TreeMap iterates miturut "urutan alam" tombol miturut cara compareTo () (utawa Comparator external). Iku uga ngleksanakake antarmuka SortedMap , kang ngemot cara sing gumantung ing urutan urutan.

Null Keys lan Nilai

HashMaps lan LinkedHashMap ndhukung nilai null uga nilai kunci, dene TreeMaps ora ndhukung nilai null amarga ndhukung jinis unsur alam. Kanggo conto visual, ayo nggawe HashMap , LinkedHashMap lan 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);

            }

}
Ing output kita entuk:
{First=Java, Second=Python} Nilai HashMap yaiku: {Second=Python, First=Java} Nilai LinkedHashMap yaiku: {First=Java, Second=Python}
Mangkono, kabeh telung kelas makili pemetaan saka tombol unik kanggo nilai lan mulane ngleksanakake antarmuka Peta .
  • HashMap minangka peta adhedhasar hashing tombol. Ndhukung operasi njaluk / sijine O (1). Tombol kudu konsisten hashCode () lan padha () implementasine .

  • LinkedHashMap meh padha karo HashMap , nanging nduweni urutan sing ditambahake unsur (utawa diakses), supaya urutan pengulangan padha karo urutan panggonan (utawa urutan akses, gumantung saka parameter desain).

  • TreeMap minangka pemetaan adhedhasar wit. Operasi sijine / entuk njupuk wektu O (log n). Iki mbutuhake unsur-unsur kasebut duwe mekanisme perbandingan, kanthi perbandingan utawa komparator. Urutan pengulangan ditemtokake dening mekanisme iki.

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