JavaRush /Java Blog /Random-ID /Rehat kopi #132. Mari kita lihat ZGC, pengumpul sampah te...

Rehat kopi #132. Mari kita lihat ZGC, pengumpul sampah terbaru di JDK. Apa perbedaan antara HashMap, LinkedHashMap dan TreeMap di Java

Dipublikasikan di grup Random-ID

Memperkenalkan ZGC, pengumpul sampah terbaru JDK

Sumber: Inside Java ZGC atau Z Garbage Collector adalah pengumpul sampah paling modern di JDK. Ini awalnya muncul di JDK 11 sebagai fitur eksperimental. ZGC menjadi fitur produksi di JDK 15 setelah peningkatan JEP 377 disetujui. Pada artikel ini, kita akan melihat tujuan dan masa depan ZGC. Rehat kopi #132.  Mari kita lihat ZGC, pengumpul sampah terbaru di JDK.  Apa perbedaan antara HashMap, LinkedHashMap dan TreeMap di Java - 1

Ulasan ZGC

ZGC dirancang untuk menjadi pengumpul sampah yang skalabel dan berlatensi rendah. Waktu jeda maksimum selama pengoperasian ZGC jarang melebihi 250 mikrodetik. Ya, tepatnya mikrodetik, dengan waktu jeda rata-rata puluhan mikrodetik. ZGC sangat skalabel, dengan ukuran heap minimum berkisar antara 8 MB hingga 16 TB. Penting untuk dicatat bahwa waktu jeda tidak bertambah seiring dengan ukuran tumpukan. Jadi, bahkan dengan tumpukan berukuran beberapa terabyte, waktu jeda akan tetap diukur dalam mikrodetik. Meskipun ZGC memberikan latensi rendah dan skalabilitas tinggi, ZGC menghasilkan biaya throughput sekitar 10% lebih rendah dibandingkan dengan G1. Pengurangan throughput yang tepat bergantung pada desain aplikasi, arsitektur sistem, dan kebutuhan bisnis.

Menggunakan ZGC

Karena G1 adalah pengumpul sampah default yang dimulai dengan JDK 9, Anda perlu menyetel tanda VM -XX:+UseZGC untuk menggunakan ZGC. Saat menggunakan ZGC, konfigurasi terpenting adalah menyetel ukuran heap maksimum, -Xmx. Ukuran heap harus cukup besar untuk menangani live-set aplikasi Anda. Ia juga harus memiliki cadangan tambahan untuk melakukan pengumpulan sampah. Semakin banyak ruang yang tersedia di heap, semakin jarang pengumpulan sampah diperlukan. Namun perlu diperhatikan bahwa hal ini harus diimbangi dengan penggunaan memori.

Pengembangan lebih lanjut dari ZGC

Sejak dirilis sebagai fitur produksi di JDK 15, ZGC terus dikembangkan secara aktif. Dengan dirilisnya JDK 16, ia memperkenalkan pemrosesan paralel tumpukan thread (JEP 376), dan JDK 18 menambahkan deduplikasi baris sebagai fitur tambahan. Kedepannya, ZGC direncanakan akan menjadi multi-generasi, meskipun jangka waktu spesifik untuk melaksanakan penyempurnaan ini belum ditentukan.

Informasi lebih lanjut tentang ZDC

Apa perbedaan antara HashMap, LinkedHashMap dan TreeMap di Java

Sumber: Rrtutors Jika Anda ingin menyimpan pasangan kunci-nilai dalam program Java, koleksi Java menawarkan banyak opsi untuk ini tergantung pada kebutuhan Anda. Ini termasuk LinkedHashmap , HashMap dan TreeMap . Perbedaan utama antara ketiga kelas ini terletak pada implementasi internalnya dan penerapan spesifiknya dalam kasus tertentu. Rehat kopi #132.  Mari kita lihat ZGC, pengumpul sampah terbaru di JDK.  Apa perbedaan antara HashMap, LinkedHashMap dan TreeMap di Java - 2

Perbedaan antara HashMap, LinkedHashMap dan TreeMap di Java

Berikut adalah perbedaan utama antara ketiga kelas yang disebutkan berdasarkan implementasi, pengurutan, pengurutan, dan dukungan untuk kunci dan nilai null.

Penerapan

HashMap dan LinkedHashMap mengimplementasikan antarmuka Map , sedangkan TreeMap mengimplementasikan antarmuka Map , NavigableMap , dan vSortedMap . LinkedHashMap diimplementasikan sebagai bucket daftar tertaut ganda, HashMap diimplementasikan sebagai tabel hash, dan TreeMap diimplementasikan sebagai pohon.

Memesan dan menyortir

  • HashMap tidak memberikan jaminan mengenai urutan iterasi. Namun, itu bisa berubah sepenuhnya ketika elemen baru ditambahkan.

  • LinkedHashMap akan melakukan iterasi sesuai urutan penempatan entri ke dalam peta.

  • TreeMap melakukan iterasi berdasarkan “urutan alami” kunci sesuai dengan metode CompareTo() (atau Komparator eksternal). Ini juga mengimplementasikan antarmuka SortedMap , yang berisi metode yang bergantung pada urutan pengurutan.

Kunci dan Nilai Null

HashMaps dan LinkedHashMap mendukung nilai null serta nilai kunci, sedangkan TreeMaps tidak mendukung nilai null karena mendukung tipe elemen alami. Sebagai contoh visual, mari buat HashMap , LinkedHashMap dan 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);

            }

}
Pada output kita mendapatkan:
{First=Java, Second=Python} Nilai HashMap adalah: {Second=Python, First=Java} Nilai LinkedHashMap adalah: {First=Java, Second=Python}
Dengan demikian, ketiga kelas mewakili pemetaan dari kunci unik ke nilai dan karenanya mengimplementasikan antarmuka Peta .
  • HashMap adalah peta berdasarkan hashing kunci. Ini mendukung operasi get/put O(1). Kunci harus memiliki implementasi hashCode() dan equal() yang konsisten .

  • LinkedHashMap sangat mirip dengan HashMap , tetapi memiliki urutan elemen yang ditambahkan (atau diakses), sehingga urutan iterasinya sama dengan urutan penempatan (atau urutan akses, bergantung pada parameter desain).

  • TreeMap adalah pemetaan berbasis pohon. Operasi put/getnya memakan waktu O(log n). Hal ini mensyaratkan bahwa elemen-elemen tersebut mempunyai semacam mekanisme perbandingan, baik dengan pembanding maupun pembanding. Urutan iterasi ditentukan oleh mekanisme ini.

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